diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..6c3cc2e3 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ + Документация Grav CMS на русском

404 - Страница не найдена

\ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..b8e0053f --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +grav-docs.ru \ No newline at end of file diff --git a/admin-panel/accounts/configuration/index.html b/admin-panel/accounts/configuration/index.html new file mode 100644 index 00000000..4e519cb6 --- /dev/null +++ b/admin-panel/accounts/configuration/index.html @@ -0,0 +1 @@ + Настройка - Документация Grav CMS на русском
Перейти к содержанию

Настройка⚓︎

Параметр Описание
Совместимость событий администратора Включает события onAdminSave и onAdminSaveAfter для плагинов. Включено по умолчанию.

Дополнительные сведения см. в разделе Объекты Flex.

Параметр Описание
Включить кэширование индекса Кэширование индекса ускоряет поиск за счёт создания временных индексов поиска для запросов.
Срок службы кэша индекса (в секундах) Время жизни для кэширования индекса в секундах.
Включить кэширование объектов Кэширование объектов ускоряет загрузку данных и изображений объекта..
Срок службы кэша объектов (в секундах) Время жизни для кеширования объектов в секундах.
Включить кэширование рендеринга Кэширование рендеринга ускоряет отрисовку контента за счёт кэширования результирующего HTML.
Время жизни кэша рендеринга (в секундах) Срок службы кэширования рендеринга в секундах.

Если визуализируемый HTML-код содержит динамическое содержимое, кэш рендеринга можно отключить из шаблона Twig с помощью {% do block.disableCache() %}.

\ No newline at end of file diff --git a/admin-panel/accounts/groups/index.html b/admin-panel/accounts/groups/index.html new file mode 100644 index 00000000..1e317b2c --- /dev/null +++ b/admin-panel/accounts/groups/index.html @@ -0,0 +1 @@ + Группы пользователей - Документация Grav CMS на русском
Перейти к содержанию

Группы пользователей⚓︎

Группы пользователей определяют общие роли для пользователей. Это предпочтительный способ установить разрешения для пользователей, поскольку управлять ролями проще, чем изменять правила индивидуально для каждой учётной записи.

После создания группы пользователей вы можете назначить её учётным записям пользователей на вкладке «Доступ».

Группа пользователей⚓︎

Параметр Описание
Имя группы Название группы — это идентификатор группы. Его нельзя изменить после создания группы.
Отображаемое имя Отображаемое имя — это видимое имя группы.
Описание
Иконка
Enabled Если установлено значение Да, группа была включена на вашем сайте. Если Нет, разрешения, установленные группой, не применяются.
Разрешения Список всех разрешений на вашем сайте. См. ниже.

Разрешения⚓︎

Администраторам особенно полезна область разрешений. Здесь вы можете точно настроить, какой доступ получит конкретный пользователь, и что он сможет делать внутри админки.

Вот краткое описание параметров разрешений и того, что они позволяют кому-либо делать.

Сайт⚓︎

Параметр Значение Описание
Вход на сайт site.login Позволяет пользователю авторизоваться на сайте.

Админка⚓︎

Параметр Значение Описание
Вход в админку admin.login Позволяет пользователю войти в систему с правами администратора. Должно быть установлено на Да, чтобы пользователь мог войти в систему.
Суперпользователь admin.super Назначает пользователя суперадминистратором, что дает ему возможность видеть и настраивать все области сайта..
Очистка кэша admin.cache Предоставляет пользователю доступ к кнопкам сброса кэша.
Настройка admin.configuration Предоставляет пользователю доступ к области Настройка админки.
    Управление конфигурацией системы admin.configuration.system Предоставляет пользователю доступ к вкладке Система в разделе Настройка.
    Управление конфигурацией сайта admin.configuration.site Предоставляет пользователю доступ к вкладке Сайт в разделе Настройка.
    Управление конфигурацией мультимедиа admin.configuration.media Предоставляет пользователю доступ к вкладке Медиа в разделе Настройка.
    Просмотр информации о сервере admin.configuration.info Предоставляет пользователю доступ к вкладке Информация в разделе Настройка.
    Управление страницами admin.configuration.pages Предоставляет пользователю доступ к Управлению страницами, находящейся внутри области Страницы.
    Управление аккаунтами admin.configuration.accounts Предоставляет пользователю доступ к Управлению аккаунтами, находящейся внутри области Аккаунты.
Страницы admin.pages Предоставляет пользователю полный доступ к области Страницы.
Обслуживание сайта admin.maintenance Предоставляет пользователю полный доступ к области Обслуживание внутри Панели управления.
Статистика сайта admin.statistics Предоставляет пользователю полный доступ к области Статистика внутри Панели управления.
Управление плагинами admin.plugins Предоставляет пользователю полный доступ к области Плагины.
Управление темами admin.themes Предоставляет пользователю полный доступ к области Темы.
Доступ к сервису admin.tools Доступ к инструментам администратора.
Аккаунты пользователей admin.accounts Предоставляет пользователю полный доступ к области Учётные записи.
\ No newline at end of file diff --git a/admin-panel/accounts/permissions/index.html b/admin-panel/accounts/permissions/index.html new file mode 100644 index 00000000..c4eb64e6 --- /dev/null +++ b/admin-panel/accounts/permissions/index.html @@ -0,0 +1 @@ + Разрешения - Документация Grav CMS на русском
Перейти к содержанию

Разрешения⚓︎

Разрешения пользователя и группы для управления информацией, связанной с учётной записью:

Параметр Значение Описание
Настройка admin.configuration Предоставляет пользователю доступ к области Настройка.
    Настройка учётных записей admin.configuration.accounts Предоставляет пользователю доступ к области Настройка учётных записей внутри раздела Аккаунты.
Аккаунты admin.accounts Предоставляет пользователю доступ к области Аккаунты.
    Создание admin.accounts.create Предоставляет пользователю доступ к Созданию аккаунтов и групп.
    Просмотр admin.accounts.read Предоставляет пользователю доступ к Просмотру аккаунтов и групп.
    Обновление admin.accounts.update Предоставляет пользователю доступ к Обновлению аккаунтов и групп.
    Удаление admin.accounts.delete Предоставляет пользователю доступ к Удаление аккаунтов и групп.
    Список admin.accounts.list Предоставляет пользователю доступ к области Аккаунты.

Возможные значения разрешений:

Параметр Значение Описание
Разрешено true Разрешает действие, если не установлен Запрет.
Запрещено false Запрещает действие. При наличии разрешения и запрета на одно и то же действие в приоритете Запрет.
Не задано null Никакого эффекта, но действует как Запрет, если никакие другие правила не применяются.

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

\ No newline at end of file diff --git a/admin-panel/accounts/users/index.html b/admin-panel/accounts/users/index.html new file mode 100644 index 00000000..33d462c9 --- /dev/null +++ b/admin-panel/accounts/users/index.html @@ -0,0 +1 @@ + Учётные записи - Документация Grav CMS на русском
Перейти к содержанию

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

Профиль пользователя⚓︎

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

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

Кроме того, администраторы смогут легко перейти на страницу профиля другого пользователя, добавив admin/user/example к URL-адресу своего сайта. Замените example именем пользователя, для которого хотите отредактировать информацию профиля и/или разрешения.

Вкладка «Общие»⚓︎

Аватар⚓︎

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

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

После того, как вы загрузили новое изображение, просто нажмите кнопку Сохранить в правом верхнем углу страницы.

Аккаунт⚓︎

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

2-факторная аутентификация⚓︎

2-факторная аутентификация обеспечивает дополнительный уровень безопасности для вашего сайта. Узнайте больше об этой функции в разделе Безопасность.

Вкладка доступа⚓︎

Эта вкладка видна только пользователям, у которых есть разрешения на управление пользователями.

Параметр Описание
Группы Список групп пользователей.
Разрешения Список всех разрешений на вашем сайте. См. групповые разрешения.
\ No newline at end of file diff --git a/admin-panel/dashboard/configuration-site/configuration-site-defaults.png b/admin-panel/dashboard/configuration-site/configuration-site-defaults.png new file mode 100644 index 00000000..81913c02 Binary files /dev/null and b/admin-panel/dashboard/configuration-site/configuration-site-defaults.png differ diff --git a/admin-panel/dashboard/configuration-site/configuration-site-metadata.png b/admin-panel/dashboard/configuration-site/configuration-site-metadata.png new file mode 100644 index 00000000..f7025211 Binary files /dev/null and b/admin-panel/dashboard/configuration-site/configuration-site-metadata.png differ diff --git a/admin-panel/dashboard/configuration-site/configuration-site-page.png b/admin-panel/dashboard/configuration-site/configuration-site-page.png new file mode 100644 index 00000000..157d4e77 Binary files /dev/null and b/admin-panel/dashboard/configuration-site/configuration-site-page.png differ diff --git a/admin-panel/dashboard/configuration-site/configuration-site-redirects.png b/admin-panel/dashboard/configuration-site/configuration-site-redirects.png new file mode 100644 index 00000000..b2a9ed74 Binary files /dev/null and b/admin-panel/dashboard/configuration-site/configuration-site-redirects.png differ diff --git a/admin-panel/dashboard/configuration-site/configuration-site.png b/admin-panel/dashboard/configuration-site/configuration-site.png new file mode 100644 index 00000000..17761557 Binary files /dev/null and b/admin-panel/dashboard/configuration-site/configuration-site.png differ diff --git a/admin-panel/dashboard/configuration-site/index.html b/admin-panel/dashboard/configuration-site/index.html new file mode 100644 index 00000000..62100403 --- /dev/null +++ b/admin-panel/dashboard/configuration-site/index.html @@ -0,0 +1 @@ + Настройка (сайт) - Документация Grav CMS на русском
Перейти к содержанию

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

Конфигурация админки

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

Конфигурация требует уровня доступа access.admin.super или access.admin.configuration и access.admin.configuration_site.

Вкладка Сайт позволяет вам настроить параметры, найденные в файле /user/config/site.yaml. Эта вкладка дает вам доступ к параметрам и полям, которые определяют связанные с сайтом переменные, такие как имя, автор по умолчанию и метаданные, используемые на вашем сайте.

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

Значения по умолчанию⚓︎

Конфигурация админки

В этом разделе вы устанавливаете значения по умолчанию для основных параметров сайта.

Параметр Описание
Заголовок сайта Заголовок по умолчанию для вашего сайта, часто используемый темами.
Автор по умолчанию Имя автора по умолчанию, часто используется в темах или содержимом страницы.
Имейл по умолчанию Электронная почта по умолчанию для ссылки в темах или на страницах.
Типы таксономии Типы таксономии должны быть определены здесь, если вы хотите использовать их на страницах.

Тизер⚓︎

Конфигурация админки

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

Параметр Описание
Включено Включить сводку страницы (сводка будет такой же, как и содержимое страницы)
Размер тизера Количество символов на странице для использования в качестве сводки содержания.
Формат short = использовать первое вхождение разделителя или размера; long = разделитель тизера игнорируется
Разделитель Разделитель сводки (по умолчанию '==='). Обычно вы размещаете это после вступительного абзаца, а все, что до него, появляется в сводке страницы.

Метаданные⚓︎

Конфигурация админки

Метаданные - важная часть закулисного оформления страницы. Он может улучшить SEO, то, как ваши ссылки будут отображаться в различных поисковых системах и социальных сетях, и многое другое. Здесь вы можете установить различные свойства метаданных.

Параметр Описание
Метаданные Значения метаданных по умолчанию, которые будут отображаться на каждой странице, если страница не отменена.

Перенаправления и маршруты⚓︎

Конфигурация админки

Перенаправления и маршрутизация никогда не были такими простыми. Просто настройте все это в этом разделе, и все готово.

Параметр Описание
Пользовательские перенаправления Пути перенаправления на другие страницы. Допустима стандартная замена Regex.
Пользовательская маршрутизация Пути к псевдонимам других страниц. Допустима стандартная замена Regex.
\ No newline at end of file diff --git a/admin-panel/dashboard/configuration-system/configuration-system-advanced.png b/admin-panel/dashboard/configuration-system/configuration-system-advanced.png new file mode 100644 index 00000000..260ca10e Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-advanced.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-assets.png b/admin-panel/dashboard/configuration-system/configuration-system-assets.png new file mode 100644 index 00000000..c8f77ff5 Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-assets.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-caching.png b/admin-panel/dashboard/configuration-system/configuration-system-caching.png new file mode 100644 index 00000000..f2aeba7c Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-caching.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-content.png b/admin-panel/dashboard/configuration-system/configuration-system-content.png new file mode 100644 index 00000000..7f41139b Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-content.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-debugger.png b/admin-panel/dashboard/configuration-system/configuration-system-debugger.png new file mode 100644 index 00000000..a72c95a7 Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-debugger.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-error.png b/admin-panel/dashboard/configuration-system/configuration-system-error.png new file mode 100644 index 00000000..f6cb8bd4 Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-error.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-http.png b/admin-panel/dashboard/configuration-system/configuration-system-http.png new file mode 100644 index 00000000..b425ef92 Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-http.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-languages.png b/admin-panel/dashboard/configuration-system/configuration-system-languages.png new file mode 100644 index 00000000..abdb6aba Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-languages.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-markdown.png b/admin-panel/dashboard/configuration-system/configuration-system-markdown.png new file mode 100644 index 00000000..19d3dbc0 Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-markdown.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-media.png b/admin-panel/dashboard/configuration-system/configuration-system-media.png new file mode 100644 index 00000000..0f2c482f Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-media.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-session.png b/admin-panel/dashboard/configuration-system/configuration-system-session.png new file mode 100644 index 00000000..0a5818eb Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-session.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration-system-twig.png b/admin-panel/dashboard/configuration-system/configuration-system-twig.png new file mode 100644 index 00000000..58babf5e Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration-system-twig.png differ diff --git a/admin-panel/dashboard/configuration-system/configuration.png b/admin-panel/dashboard/configuration-system/configuration.png new file mode 100644 index 00000000..c78b5c9d Binary files /dev/null and b/admin-panel/dashboard/configuration-system/configuration.png differ diff --git a/admin-panel/dashboard/configuration-system/index.html b/admin-panel/dashboard/configuration-system/index.html new file mode 100644 index 00000000..2a1a6651 --- /dev/null +++ b/admin-panel/dashboard/configuration-system/index.html @@ -0,0 +1 @@ + Настройка (система) - Документация Grav CMS на русском
Перейти к содержанию

Настройка (система)⚓︎

Конфигурация админки

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

Конфигурация требует уровня доступа access.admin.super или access.admin.configuration.

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

Эти настройки разделены на несколько разделов, каждый из которых посвящен определенному аспекту работы Grav.

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

Содержание⚓︎

Конфигурация админки

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

Параметр Описание
Главная страница Выберите страницу, которую хотите сделать главной страницей вашего сайта.
Тема по умолчанию Устанавливает основную тему по умолчанию, используемую на вашем сайте.
Обработка Управляйте обработкой страниц. Может устанавливаться для каждой страницы, а не глобально.
Часовой пояс Заменить часовой пояс сервера по умолчанию.
Краткий формат даты Установите краткий формат даты, который может использоваться темами.
Длинный формат даты Установите длинный формат даты, который может использоваться темами.
Порядок по умолчанию Страницы в списке будут отображаться в этом порядке, если он не переопределен.
Порядок сортировки по умолчанию Направление страниц в списке.
Количество страниц по умолчанию Максимальное количество страниц по умолчанию в списке.
Публикация на основе даты Автоматически (не) публиковать сообщения в зависимости от их даты.
События Включение или отключение определённых событий. Отключение их может сломать плагины.
Перенаправить маршрут по умолчанию Автоматически перенаправлять на маршрут страницы по умолчанию.

Языки⚓︎

Конфигурация админки

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

Параметр Описание
Поддерживаемые языки Список двухбуквенных кодов языков, разделенных запятыми (например, 'en, fr, de').
Поддержка перевода Поддержка переводов в Grav, плагинах и темах.
Резервный перевод Загрузка других переводов, если строк для активного языка не существует.
Активный язык в сессии Хранить активный язык в сеансе пользователя.
Язык в редиректе на Home Включать язык в перенаправлении на домашнюю страницу (/en).
Маршрут в редиректе на Home Включать маршрут в перенаправлении на домашнюю страницу.

Заголовки HTTP⚓︎

Конфигурация админки

В этом разделе можно настроить параметры заголовка HTTP. Это полезно для браузерного кэширования и оптимизации.

Параметр Описание
Срок действия Устанавливает заголовок истекает. Значение в секундах.
Дата последнего изменения Устанавливает последний измененный заголовок, который может помочь оптимизировать кэширование прокси и браузера.
ETag Устанавливает заголовок ETag, чтобы помочь определить, когда страница была изменена.
Vary: Accept Encoding Устанавливает заголовок Vary: Accept Encoding, чтобы помочь с кэшированием прокси и CDN.

Markdown⚓︎

Конфигурация админки

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

Параметр Описание
Markdown Extra Включить поддержку по умолчанию для Markdown Extra.
Авто разрывы строк Включите поддержку автоматического разрыва линии в разметке Markdown.
Авто URL ссылки Включить автоматическое преобразование URL-адресов в HTML-гиперссылки.
Экранирование разметки Преобразование тегов разметки в HTML-сущности.

Кэширование⚓︎

Конфигурация админки

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

Параметр Описание
Кэширование Глобальный переключатель ВКЛ/ВЫКЛ для включения/выключения кэширования Grav.
Метод проверки кэша Устанавливает метод проверки кэша. Опции: File, Folder и None.
Драйвер кэширования Выберите, какой драйвер кэша должен использовать Grav. Auto detect = поиск наилучшего.
Префикс кэша Идентификатор части ключа Grav. Не меняйте, если не знаете, что делаете.
Время жизни Устанавливает срок службы кэша в секундах. 0 = бесконечно.
Сжатие Gzip Включите GZip сжатие Grav страницы для повышения производительности.

Шаблонизация Twig⚓︎

Конфигурация админки

Этот раздел посвящен функции шаблонизации Grav Twig. Здесь вы можете настроить кэширование, отладку и изменение настроек обнаружения Twig.

Параметр Описание
Кэширование Twig Управляйте механизмом кэширования Twig. Оставьте это включенным для лучшей производительности.
Отладка Twig Позволяет не загружать расширение отладчика Twig.
Обнаружение изменений Позволяет автоматически компилировать кэш Twig при обнаружении изменений в шаблонах.
Экранирование переменных Автоэскейпы всех переменных. Может сломать ваш сайт.

Активы⚓︎

Конфигурация админки

В этом разделе рассматривается обработка ресурсов, включая ресурсы CSS и JavaScript.

Параметр Описание
Объединять CSS Конвейер CSS - это объединение нескольких ресурсов CSS в один файл.
Минимизировать CSS Сокращать CSS во время конвейерной обработки.
Минимизировать CSS (переопределение для Windows) Минимизировать переопределение для платформ Windows. По умолчанию false из-за ThreadStackSize.
Переписать CSS Переписывать любые относительные URL-адреса CSS во время конвейерной обработки.
Объединять JavaScript Конвейер JS - это объединение нескольких ресурсов JS в один файл.
Минимизировать JavaScript Сокращать JS во время конвейерной обработки.
Включить временные метки активов Включить метки времени активов.
Коллекции Добавьте отдельные коллекции активов.

Обработчик ошибок⚓︎

Конфигурация админки

Здесь вы можете настроить, как Grav будет обрабатывать сообщения об ошибках и отображать их. Это полезный инструмент при разработке сайта.

Параметр Описание
Выводить ошибки Показать полную страницу ошибок в стиле обратной трассировки.
Логи ошибок Записывать ошибки в папку /logs.

Отладчик⚓︎

Конфигурация админки

Как и обработка ошибок, встроенные инструменты отладки Grav дают вам возможность находить и устранять проблемы. Это особенно полезно во время разработки.

Параметр Описание
Отладчик Включить отладчик Grav и следующие настройки.
Отладка Twig Включить отладку в шаблонах Twig.
Завершение открытых соединений Закрывать соединение перед вызовом onShutdown(). false для отладки.

Медиа⚓︎

Конфигурация админки

Этот раздел определяет, как Grav обрабатывает медиаконтент. Здесь настраиваются качество изображения и другие параметры обработки мультимедиа.

Параметр Описание
Качество изображений по умолчанию Качество изображения по умолчанию для использования при передискретизации или кэшировании изображений (85%).
Кэшировать все картинки Пропускайте все изображения через систему кэширования Grav, даже если они не требуют манипуляций с медиа.
Отладка водяного знака изображения Показывать наложение поверх изображений, указывающее глубину пикселя изображения, например, при работе с Retina.
Включить временные метки на медиа Добавляет метку времени на основе даты последнего изменения к каждому элементу мультимедиа.

Кэширование изображений, которые уже были оптимизированы (за пределами Grav), может привести к тому, что выходной файл будет иметь гораздо больший размер файла, чем исходный. Это происходит из-за ошибки в библиотеке изображений Gregwar и не имеет прямого отношения к Grav (дополнительную информацию см. в этом открытом выпуске). Альтернативный вариант - установить для параметра «Кэшировать все изображения» значение Нет.

Сессия⚓︎

Конфигурация админки

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

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

Дополнительно⚓︎

Конфигурация админки

Этот раздел содержит расширенные параметры системы.

Параметр Описание
Абсолютный путь Абсолютные или относительные URL-адреса для base_url.
Разделитель параметров Разделитель для переданных параметров, которые можно изменить для Apache в Windows.
\ No newline at end of file diff --git a/admin-panel/dashboard/grav-dashboard-cache.png b/admin-panel/dashboard/grav-dashboard-cache.png new file mode 100644 index 00000000..314717a4 Binary files /dev/null and b/admin-panel/dashboard/grav-dashboard-cache.png differ diff --git a/admin-panel/dashboard/grav-dashboard-latest.png b/admin-panel/dashboard/grav-dashboard-latest.png new file mode 100644 index 00000000..95197e67 Binary files /dev/null and b/admin-panel/dashboard/grav-dashboard-latest.png differ diff --git a/admin-panel/dashboard/grav-dashboard-maintenance-2.png b/admin-panel/dashboard/grav-dashboard-maintenance-2.png new file mode 100644 index 00000000..382ec788 Binary files /dev/null and b/admin-panel/dashboard/grav-dashboard-maintenance-2.png differ diff --git a/admin-panel/dashboard/grav-dashboard-maintenance.png b/admin-panel/dashboard/grav-dashboard-maintenance.png new file mode 100644 index 00000000..a32c322a Binary files /dev/null and b/admin-panel/dashboard/grav-dashboard-maintenance.png differ diff --git a/admin-panel/dashboard/grav-dashboard.png b/admin-panel/dashboard/grav-dashboard.png new file mode 100644 index 00000000..7104d6f0 Binary files /dev/null and b/admin-panel/dashboard/grav-dashboard.png differ diff --git a/admin-panel/dashboard/index.html b/admin-panel/dashboard/index.html new file mode 100644 index 00000000..fa01dccd --- /dev/null +++ b/admin-panel/dashboard/index.html @@ -0,0 +1 @@ + Обзор - Документация Grav CMS на русском
Перейти к содержанию

Дашборд⚓︎

Дашборд админки

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

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

Содержимое дашборда будет меняться в зависимости от разрешений пользователя. Например, предоставление доступа access.admin.super разблокирует все. Если этот уровень доступа не предоставлен, access.admin.main maintenance разрешает очистку и обновление кэша, access.admin.pages разрешает доступ к страницам, access.admin.statistics позволяет отображать статистику посетителей сайта.

Кэш и проверка обновлений⚓︎

Дашборд админки

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

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

Вторая кнопка запускает проверку обновлений для вашего сайта. Сюда входят любые поддерживаемые плагины, темы и сама CMS. Если будут обнаружены новые обновления, вы получите уведомление на панели управления. Это не единственный метод Grav для проверки обновлений.

Проверки обновлений также запускаются всякий раз, когда загружается новая страница в админке, и кэшируются в течение одного дня. Если вы очистите кэш Grav и загрузите новую страницу в админке, проверка обновлений будет выполнена автоматически.

Обслуживание и статистика⚓︎

Дашборд админки

Разделы Обслуживание и Статистика предоставляют вам быстрый доступ к важной информации о вашем сайте.

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

Дашборд админки

Если доступны новые обновления, появится кнопка Обновить, которая позволяет выполнить обновление в один клик для всех плагинов и тем. Эта кнопка не обновляет CMS, уведомления об обновлении которой можно найти чуть выше разделов «Обслуживание» и «Статистика».

Вы можете обновить ядро ​​Grav, нажав кнопку Обновить Grav сейчас на панели уведомлений.

Также есть график, показывающий, как долго сайт был без резервного копирования. При нажатии кнопки Создать резервную копию будет создан zip-файл, который вы можете загрузить и сохранить в качестве резервной копии данных вашего сайта.

Резервные копии также хранятся в папке backup/ вашей установки Grav. Вы можете получить их через FTP или инструменты веб-менеджера, предоставленные вашей хостинговой компанией.

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

Последние обновлённые страницы⚓︎

Дашборд админки

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

Кнопка Управление страницами переводит вас на административную панель Страницы.

\ No newline at end of file diff --git a/admin-panel/dashboard/profile/grav-profile.png b/admin-panel/dashboard/profile/grav-profile.png new file mode 100644 index 00000000..4ac78706 Binary files /dev/null and b/admin-panel/dashboard/profile/grav-profile.png differ diff --git a/admin-panel/dashboard/profile/grav-profile2.png b/admin-panel/dashboard/profile/grav-profile2.png new file mode 100644 index 00000000..5336a41b Binary files /dev/null and b/admin-panel/dashboard/profile/grav-profile2.png differ diff --git a/admin-panel/dashboard/profile/grav-profile2b.png b/admin-panel/dashboard/profile/grav-profile2b.png new file mode 100644 index 00000000..de878127 Binary files /dev/null and b/admin-panel/dashboard/profile/grav-profile2b.png differ diff --git a/admin-panel/dashboard/profile/grav-profile3.png b/admin-panel/dashboard/profile/grav-profile3.png new file mode 100644 index 00000000..8873ef90 Binary files /dev/null and b/admin-panel/dashboard/profile/grav-profile3.png differ diff --git a/admin-panel/dashboard/profile/grav-profile4.png b/admin-panel/dashboard/profile/grav-profile4.png new file mode 100644 index 00000000..d582b446 Binary files /dev/null and b/admin-panel/dashboard/profile/grav-profile4.png differ diff --git a/admin-panel/dashboard/profile/grav-profile5.png b/admin-panel/dashboard/profile/grav-profile5.png new file mode 100644 index 00000000..ee1ba3d7 Binary files /dev/null and b/admin-panel/dashboard/profile/grav-profile5.png differ diff --git a/admin-panel/dashboard/profile/index.html b/admin-panel/dashboard/profile/index.html new file mode 100644 index 00000000..cd093488 --- /dev/null +++ b/admin-panel/dashboard/profile/index.html @@ -0,0 +1 @@ + Профиль - Документация Grav CMS на русском
Перейти к содержанию

Профиль⚓︎

Профиль админки

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

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

Кроме того, администраторам понравится простота перехода на страницу профиля другого пользователя, добавив к URL-адресу своего сайта admin/user/example. Замените example именем пользователя, для которого они хотят редактировать информацию профиля и / или разрешения.

Фото профиля⚓︎

Профиль админки

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

Профиль админки

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

После загрузки нового изображения просто нажмите кнопку Сохранить в правом верхнем углу страницы.

Аккаунт⚓︎

Профиль админки

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

Двухфакторная аутентификация⚓︎

Профиль админки

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

Уровни доступа⚓︎

Профиль админки

Администраторы найдут область разрешений особенно полезной. Здесь вы можете точно настроить, что пользователь будет иметь доступ и делать в рамках администратора.

Вот краткое описание параметров разрешений и того, что они позволяют кому-то делать.

Параметр Описание
admin.super Назначает пользователя суперадминистратором, предоставляя ему возможность видеть и настраивать все области сайта.
admin.login Позволяет пользователю войти в систему администратора. Для входа в систему должен иметь значение Yes.
admin.cache Предоставляет пользователю доступ к кнопкам сброса кэша.
admin.configuration Предоставляет пользователю доступ к области Конфигурация администратора. Это не включает в себя никаких вкладок или подразделов.
admin.configuration_system Предоставляет пользователю доступ к вкладке Система в области Конфигурация администратора.
admin.configuration_site Предоставляет пользователю доступ к вкладке Сайт в области Конфигурация администратора.
admin.configuration_media Предоставляет пользователю доступ к вкладке Медиа в области Конфигурация администратора.
admin.configuration_info Предоставляет пользователю доступ к вкладке Информация в области Конфигурация администратора.
admin.pages Предоставляет пользователю доступ к области Страницы администратора.
admin.maintenance Дает пользователю возможность получить доступ к области Техническое обслуживание дашборда админки.
admin.statistics Дает пользователю возможность получить доступ к области Статистика дашборда админки.
admin.plugins Предоставляет пользователю доступ к области Плагины администратора.
admin.themes Предоставляет пользователю доступ к области Темы администратора.
admin.users Позволяет пользователю получать доступ к профилям других пользователей и редактировать её. Это не включает в себя разрешения.
site.login Позволяет пользователю войти в интерфейс.
\ No newline at end of file diff --git a/admin-panel/extending/admin-events/index.html b/admin-panel/extending/admin-events/index.html new file mode 100644 index 00000000..5a490897 --- /dev/null +++ b/admin-panel/extending/admin-events/index.html @@ -0,0 +1 @@ + Хуки событий админки - Документация Grav CMS на русском
Перейти к содержанию

Хуки событий админки⚓︎

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

Включение хука событий админки⚓︎

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

Доступные хуки событий админки⚓︎


onAdminTaskExecute⚓︎

Плагин админки запускает различные задачи в зависимости от взаимодействия с пользователем. Задачи могут включать выход из системы, вход в систему, сохранение, 2faverify и т. д. После завершения задачи срабатывает этот обработчик событий.

onAdminCreatePageFrontmatter⚓︎

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

onAdminSave⚓︎

Используйте событие onAdminSave() для управления данными объекта страницы $object перед их сохранением в файловой системе.

onAdminAfterSave⚓︎

После сохранения страницы в панели админки это событие запускается.

onAdminAfterSaveAs⚓︎

При создании папки через панель это событие срабатывает сразу после создания новой папки и выполнения стандартной очистки кэша.

onAdminAfterDelete⚓︎

Срабатывает после удаления страницы или папки. Сразу после этого следует стандартная очистка кэша.

onAdminAfterAddMedia⚓︎

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

onAdminAfterDelMedia⚓︎

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

\ No newline at end of file diff --git a/admin-panel/extending/index.html b/admin-panel/extending/index.html new file mode 100644 index 00000000..b90d05ba --- /dev/null +++ b/admin-panel/extending/index.html @@ -0,0 +1,134 @@ + Обзор - Документация Grav CMS на русском
Перейти к содержанию

Расширение админки⚓︎

На этой странице представлены инструкции по расширению панели админки, а также примеры расширений.

Понимание тем админки⚓︎

Как и при расширении или изменении обычной темы Grav, вы будете переопределять шаблоны, чтобы изменить структуру и внешний вид подключаемого модуля админки. Это означает, что шаблоны, которые ваш плагин объявляет для использования вместо шаблонов по умолчанию, должны точно отражать структуру темы админки. Например, если мы хотим изменить аватар в левой части навигации, мы должны изменить nav-user-avatar.html.twig.

В подключаемом модуле админки путь к шаблонам следующий: user/plugins/admin/themes/grav/templates, в дальнейшем именуемый ADMIN_TEMPLATES. Файл, который мы ищем, это ADMIN_TEMPLATES/partials/nav-user-avatar.html.twig, который содержит <img src="https://www.gravatar.com/avatar/{{ admin.user.email|md5 }}?s=47" />.

В вашем плагине путь к шаблонам должен быть: user/plugins/myadminplugin/admin/themes/grav/templates, в дальнейшем именуемый PLUGIN_TEMPLATES. Соответствующий файл должен быть PLUGIN_TEMPLATES/partials/nav-user-avatar.html.twig, который будет содержать что-то вроде <img src="{{ myadminplugin_avatar_image_path }}" />.

Таким образом, мы переопределяем путь к шаблону, но без разрушения. Мы нацелены только на соответствующий шаблон таким образом, чтобы не переопределять ненужные шаблоны и не мешать другим темам администратора регистрировать свои альтернативные шаблоны для того же использования. Для этого прописываем путь в нашем плагине вот так:

<?php
+
+public static function getSubscribedEvents()
+{
+    return [
+        'onAdminTwigTemplatePaths' => ['onAdminTwigTemplatePaths', 0]
+    ];
+}
+
+public function onAdminTwigTemplatePaths($event)
+{
+    $paths = $event['paths'];
+    $paths[] = __DIR__ . '/admin/themes/grav/templates';
+    $event['paths'] = $paths;
+}
+

Важно помнить, что тема, используемая в плагине админки, чувствительна к доступным шаблонам. Как правило, вам следует изменять шаблоны только со слабым воздействием, то есть вносить изменения, которые не нарушат интерфейс для любого пользователя, устанавливающего ваш плагин. В этом смысле лучше переопределить nav-user-avatar.html.twig, чем nav.html.twig, поскольку последний содержит гораздо больше функций, но использует {% include 'partials/nav-user-details.html.twig' %}, чтобы включить первый.

В файлах шаблонов админки включено автоматическое экранирование. Вам не нужно добавлять фильтр |e для экранирования HTML-содержимого, но требуется добавлять |raw при вводе HTML.

Добавление пользовательского поля⚓︎

Чтобы создать пользовательское поле, мы добавим его в PLUGIN_TEMPLATES/forms/fields/myfield. В папке myfield нам нужен шаблон Twig, который объявляет, как будет работать поле. Самый простой способ добавить поле — найти аналогичное поле в ADMIN_TEMPLATES/forms/fields и скопировать его, чтобы увидеть, как они структурированы. Например, чтобы добавить слайдер диапазона HTML, мы создаем PLUGIN_TEMPLATES/forms/fields/range/range.html.twig. В этом файле мы добавляем:

{% extends "forms/field.html.twig" %}
+
+{% block input_attributes %}
+    type="range"
+    {% if field.validate.min %}min="{{ field.validate.min }}"{% endif %}
+    {% if field.validate.max %}max="{{ field.validate.max }}"{% endif %}
+    {% if field.validate.step %}step="{{ field.validate.step }}"{% endif %}
+    {{ parent() }}
+{% endblock %}
+

Это добавляет тип поля под названием «диапазон» с типом диапазон, который позволяет пользователю выбирать значение, сдвигая кнопку. Чтобы использовать новое поле в чертеже, мы просто добавим его в blueprints.yaml:

form:
+  fields:
+    radius:
+      type: range
+      label: Radius
+      id: radius
+      default: 100
+      validate:
+        min: 0
+        max: 100
+        step: 10
+

Это дает нам ползунок со значением по умолчанию 100, где допустимые значения находятся в диапазоне от 0 до 100, и каждое значение увеличивается на 10, когда мы его перемещаем.

Мы могли бы расширить это, используя доступные блоки prepend илиappend, например, добавив визуальный индикатор выбранного значения. Мы изменяем range.html.twig, чтобы он содержал следующее:

{% extends "forms/field.html.twig" %}
+
+{% block input_attributes %}
+    type="range"
+    style="display: inline-block;vertical-align: middle;"
+    {% if field.id is defined %}
+        oninput="{{ field.id|e }}_output.value = {{ field.id|e }}.value"
+    {% endif %}
+    {% if field.validate.min %}min="{{ field.validate.min }}"{% endif %}
+    {% if field.validate.max %}max="{{ field.validate.max }}"{% endif %}
+    {% if field.validate.step %}step="{{ field.validate.step }}"{% endif %}
+    {{ parent() }}
+{% endblock %}
+{% block append %}
+  {% if field.id is defined %}
+    <output
+        name="{{ (scope ~ field.name)|fieldName }}"
+        id="{{ field.id|e }}_output"
+        style="display: inline-block;vertical-align: baseline;padding: 0 0.5em 5px 0.5em;"
+    >
+    {{ value|join(', ')|e('html_attr') }}
+    </output>
+  {% endif %}
+{% endblock append %}
+

Таким образом, мы добавляем тег <output>, который будет содержать выбранное значение, и добавляем к нему и самому полю простой стиль для их правильного выравнивания. Мы также добавляем в поле атрибут oninput, чтобы при изменении значений автоматически обновлялся тег <output> со значением. Для этого требуется, чтобы каждое поле, использующее ползунок диапазона, имело уникальное свойство id, например, id: radius, которое мы объявили выше, которое должно быть чем-то вроде id: myadminplugin_radius, чтобы избежать конфликтов.

!!Если этот новый шаблон будет доступен для фронтенда и панели админки (например, при использовании папки PLUGIN_TEMPLATES), вам нужно экранировать все переменные с помощью |e. В качестве альтернативы вы можете просто перейти к параметру Настройка > Система > Шаблонизация Twig > Экранирование переменных и включить его.

Создание пользовательских шаблонов страниц⚓︎

Как упоминалось в Основах тем, существует прямая связь между страницами в Grav и файлами шаблонов Twig, предоставленными в плагине/теме. Чтобы создать настраиваемый шаблон страницы, вам понадобится файл чертежа для определения полей для плагина админки и файл шаблона для визуализации содержимого.

Добавление пользовательского шаблона страниц в тему/плагин⚓︎

В корне папки темы или плагина создайте папку с именем templates. Внутри этой папки создайте новый файл mypage.html.twig. Это будет шаблон Twig для нового шаблона страницы «mypage».

Пример mypage.html.twig:

{% extends 'partials/base.html.twig' %}
+
+{% block content %}
+    {{ page.header.newTextField }}
+    {{ page.content}}
+{% endblock %}
+

Дополнительную информацию о темах Twig можно найти в разделе Twig Primer.

Темы автоматически находят файлы шаблонов в папке templates темы. Если шаблон добавляется через плагин, вам нужно добавить шаблон через событиеonTwigTemplatePaths:

<?php
+
+public function onPluginsInitialized()
+{
+    // If in an Admin page.
+    if ($this->isAdmin()) {
+        return;
+    }
+    // If not in an Admin page.
+    $this->enable([
+        'onTwigTemplatePaths' => ['onTwigTemplatePaths', 1],
+    ]);
+}
+
+/**
+ * Add templates directory to twig lookup paths.
+ */
+public function onTwigTemplatePaths()
+{
+    $this->grav['twig']->twig_paths[] = __DIR__ . '/templates';
+}
+

Добавление пользовательского чертежа страницы в тему/плагин⚓︎

Чтобы плагин админки предоставил новую опцию страницы mypage, создайте папку с именемblueprints в корне темы/плагина. Внутри этой папки создайте новый файл mypage.yaml. Здесь вы определите настраиваемые поля для плагина админки, которые будут отображаться при создании новой страницы. Доступные поля формы можно найти в главе Формы.

Пример чертежа mypage.yaml ниже расширяет шаблон страницы по умолчанию, а затем добавляет header.newTextField под вкладкой содержимого:

title: My Page Blueprint
+'@extends':
+    type: default
+    context: blueprints://pages
+
+form:
+  fields:
+    tabs:
+      type: tabs
+      active: 1
+      fields:
+        content:
+          type: tab
+          fields:
+             header.newTextField:
+              type: text
+              label: 'New Text Field'
+

Подобно папке templates, тема автоматически добавит все yaml-файлы чертежей, найденные в папке blueprints. Если чертеж добавляется через плагин, вам нужно добавить чертеж через событие onGetPageTemplates:

<?php
+
+public function onPluginsInitialized()
+{
+    // If in an Admin page.
+    if ($this->isAdmin()) {
+        $this->enable([
+            'onGetPageBlueprints' => ['onGetPageBlueprints', 0],
+            'onGetPageTemplates' => ['onGetPageTemplates', 0],
+        ]);
+        return;
+    }
+
+/**
+    * Add blueprint directory.
+    */
+public function onGetPageBlueprints(Event $event)
+{
+    $types = $event->types;
+    $types->scanBlueprints('plugin://' . $this->name . '/blueprints');
+}
+
+/**
+    * Add templates directory.
+    */
+public function onGetPageTemplates(Event $event)
+{
+    $types = $event->types;
+    $types->scanTemplates('plugin://' . $this->name . '/templates');
+}
+

Создание новой страницы⚓︎

После определения файлов чертежей и шаблонов создайте новую страницу в панели админки, нажав Добавить и выбрав «Моя страница»: myPage.jpg

В форме редактирования админки теперь отображается новое настраиваемое поле «Новое текстовое поле»: myPage-customField.jpg

\ No newline at end of file diff --git a/admin-panel/extending/myPage-customField.jpg b/admin-panel/extending/myPage-customField.jpg new file mode 100644 index 00000000..6e5d0d09 Binary files /dev/null and b/admin-panel/extending/myPage-customField.jpg differ diff --git a/admin-panel/extending/myPage.jpg b/admin-panel/extending/myPage.jpg new file mode 100644 index 00000000..67c63adc Binary files /dev/null and b/admin-panel/extending/myPage.jpg differ diff --git a/admin-panel/faq/faq_1.png b/admin-panel/faq/faq_1.png new file mode 100644 index 00000000..7eb81393 Binary files /dev/null and b/admin-panel/faq/faq_1.png differ diff --git a/admin-panel/faq/faq_2.png b/admin-panel/faq/faq_2.png new file mode 100644 index 00000000..67afa6f3 Binary files /dev/null and b/admin-panel/faq/faq_2.png differ diff --git a/admin-panel/faq/index.html b/admin-panel/faq/index.html new file mode 100644 index 00000000..310ec38e --- /dev/null +++ b/admin-panel/faq/index.html @@ -0,0 +1,14 @@ + ЧаВо - Документация Grav CMS на русском
Перейти к содержанию

ЧаВо⚓︎

Этот FAQ предназначен для предоставления полезных руководств, советов и трюков, которые помогут вам получить максимальную отдачу от плагина админки.

Ручная установка админки⚓︎

Ручная установка не является рекомендуемым методом установки, однако всё ещё можно установить плагин админки вручную. В принципе, вам нужно загрузить каждый из следующих плагинов по отдельности:

Распакуйте каждый архивный файл в папку user/plugins, затем убедитесь, что папки переименованы только в admin/, login/, form/ и email/. Затем следуйте инструкциям по использованию ниже.

Добавление и управление пользователями⚓︎

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

Новый пользователь

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

bin/plugin login newuser
+

ЧаВо

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

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

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

Роль Описание
Admin Предоставляет пользователю доступ к серверной части администратора. Эта роль не включает внешний доступ к защищенным страницам.
Site Предоставляет пользователю доступ ко всем страницам в интерфейсе. Это эквивалент вошедшего в систему пользователя.
Admin and Site Предоставляет пользователю доступ ко всему сайту, как к интерфейсу, так и к серверной части.

Пользовательские данные хранятся в SITE_ROOT/user/accounts/, и каждому пользователю предоставляется файл YAML, содержащий информацию для входа в систему и другие данные. Вот пример данных, содержащихся в файле учетной записи пользователя. Например, содержимое SITE_ROOT/user/accounts/tester.yaml может быть таким:

Имя файла tester.yaml диктуется именем пользователя tester

email: test@rockettheme.com
+access:
+  admin:
+    login: true
+    super: true
+  site:
+    login: true
+fullname: 'Tester McTesting'
+title: Admin
+hashed_password: $2y$10$5RAUI6ZCISWR.4f0D6FILu3efYq3078ZX/.9vtAnZbjxS/4PXN/WW
+

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

ЧаВо

Фотографии аватаров автоматически генерируются Gravatar, основываясь на адресе электронной почты пользователя.

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

Управление доступом⚓︎

Каждый пользовательский файл yaml имеет свойство "доступ". Установив это свойство соответствующим образом, вы можете предоставить конкретному пользователю доступ только к определенной части администратора.

Вот объясненные в настоящее время поддерживаемые уровни доступа:

  • admin.login: позволяет пользователю войти в систему с правами администратора
  • admin.super: предоставляет пользователю полномочия суперадминистратора, предоставляя доступ ко всему интерфейсу и функциям администратора
  • admin.pages: позволяет пользователю просматривать страницы, редактировать их и добавлять новые
  • admin.main maintenance: позволяет пользователю обновлять Grav со стороны администратора, проверять наличие обновлений и очищать кэш
  • admin.plugins: позволяет пользователю получить доступ к функциям плагинов, редактировать настройки плагинов, отключать плагины или добавлять новые
  • admin.themes: позволяет пользователю получить доступ к функциям тем, редактировать настройки темы, изменять темы и добавлять новые
  • admin.statistics: позволяет пользователю видеть статистику сайта
  • admin.cache: позволяет пользователю очистить кэш
  • admin.configuration: позволяет пользователю получить доступ к конфигурации экземпляра. Разрешение на отдельные части должно быть дано отдельно через переменные, перечисленные ниже. Только включение «вложенных переменных» без включения основной переменной не приведет к включению меню конфигурации для пользователя.
  • admin.configuration_system: позволяет пользователю изменять системные настройки
  • admin.configuration_site: позволяет пользователю изменять настройки сайта
  • admin.configuration_media: позволяет пользователю редактировать доступные типы мультимедиа
  • admin.configuration_info: позволяет пользователю просматривать информацию об этом экземпляре
  • другие уровни доступа, которые ещё не объяснены:
  • admin.tools
  • admin.settings
  • admin.users

Cизменения, внесенные в файл user.yaml, пока этот пользователь вошел в систему, вступят в силу только после того, как он выйдет из системы и снова войдет в систему.

Пользовательский URL-адрес админки⚓︎

Один из способов защитить вашу админ-панель - скрыть её местоположение. Для этого нужно изменить URL-адрес с

https://yourwebsite.com/admin
+

к чему-то более неоднозначному, о чем будет труднее угадать. Для этого вам нужно найти admin.yaml, который находится в папке user/plugins/admin/, и скопировать его в user/config/plugins/admin.yaml.

Затем измените строку route: /admin на что-нибудь более двусмысленное, например, route: /myspecialplace, таким образом, если вам нужно получить доступ к панели администратора вашего сайта, вы введете

https://yourwebsite.com/myspecialplace
+

Автономный режим⚓︎

Офлайн

В случае, если ваш сервер теряет соединение с Интернетом, Grav Admin автоматически переходит в автономный режим. Этот режим обозначается уведомлением под нижним минимумом в верхнем левом углу окна администратора.

В автономном режиме администратор не будет пытаться получать обновления для CMS, плагинов или тем. Это предотвращает зависание и другие проблемы, которые в противном случае могли бы возникнуть из-за невозможности доступа к серверам обновлений.

После восстановления подключения к Интернету уведомление исчезнет, ​​и автономный режим автоматически отключится.

\ No newline at end of file diff --git a/admin-panel/faq/offline.png b/admin-panel/faq/offline.png new file mode 100644 index 00000000..cc73aeef Binary files /dev/null and b/admin-panel/faq/offline.png differ diff --git a/admin-panel/introduction/admin-dashboard.png b/admin-panel/introduction/admin-dashboard.png new file mode 100644 index 00000000..f8eba9e1 Binary files /dev/null and b/admin-panel/introduction/admin-dashboard.png differ diff --git a/admin-panel/introduction/index.html b/admin-panel/introduction/index.html new file mode 100644 index 00000000..43b25065 --- /dev/null +++ b/admin-panel/introduction/index.html @@ -0,0 +1,4 @@ + Введение - Документация Grav CMS на русском
Перейти к содержанию

Введение⚓︎

Плагин административной панели для Grav представляет собой веб-интерфейс (графический пользовательский интерфейс), который обеспечивает удобный способ настройки Grav и легкого создания и изменения страниц. Это останется полностью необязательным плагином, который никоим образом не требуется и не нужен для эффективного использования Grav. Фактически, интерфейс админки предоставляет намеренно ограниченный вид, чтобы он оставался простым в использовании и не перегружал. Опытные пользователи по-прежнему предпочтут работать напрямую с файлами конфигурации.

Особенности⚓︎

  • Логин пользователя с автоматическим хешированием пароля
  • Функция забытого пароля
  • Управление зарегистрированным пользователем
  • Обновление ядра Grav в один клик
  • Панель инструментов со статусом обслуживания, активностью сайта и последними обновлениями страниц
  • Возможность резервного копирования на базе Ajax
  • Возможность очистки кэша на основе Ajax
  • Управление конфигурацией системы
  • Управление конфигурацией сайта
  • Нормальный и экспертный режимы, которые позволяют редактировать через формы или YAML
  • Листинг страниц с фильтрацией и поиском
  • Создание, редактирование, перемещение, копирование и удаление страниц
  • Мощный редактор кода с подсветкой синтаксиса с мгновенным предварительным просмотром на основе Grav
  • Функции редактора, горячие клавиши, панель инструментов и полноэкранный режим без отвлекающих факторов
  • Загрузка медиафайлов страниц с помощью перетаскивания, включая размещение в редакторе методом перетаскивания
  • Обновление тем и плагинов в один клик
  • Менеджер плагинов, который позволяет перечислять и настраивать установленные плагины
  • Менеджер тем, который позволяет перечислять и настраивать установленные темы
  • Установка новых плагинов и тем с помощью GPM
  • ACL для доступа администраторов к функциям

Поддержка⚓︎

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

Для живого чата используйте Discord Chat Server для обсуждений, связанных с плагином админки.

Для ошибок, функций, улучшений создайте issue в репозитории GitHub.

Установка⚓︎

Сначала убедитесь, что у вас установлена ​​последняя версия Grav {{grav_version}} или более поздняя. Это необходимо для правильной работы плагина админки. Проверьте наличие новых версий Grav и обновитесь до них (-f принудительно обновляет индекс GPM):

bin/gpm version -f
+bin/gpm selfupgrade
+

плагину админки на самом деле требуется помощь 3 других плагинов, поэтому для того, чтобы плагин Admin работал, вам сначала нужно установить плагины login, forms и email. Они доступны через GPM, и поскольку у плагина есть зависимости, вам просто нужно продолжить и установить плагин админки и согласиться, когда будет предложено установить другие:

bin/gpm install admin
+

Вы также можете установить плагин вручную, если не можете использовать GPM в своей системе.

Создание пользователя⚓︎

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

Просто заполните форму и нажмите кнопку Создать пользователя.

Информация о пользователе хранится в папке user/accounts/ вашей установки Grav. Вы можете редактировать значения вручную или через сам плагин админки. Вы также можете создавать новых пользователей вручную или с помощью CLI-команды bin/plugin login newuser. Более подробная информация содержится в FAQ для администраторов.

Сложность имени пользователя и пароля⚓︎

Шаблоны регулярных выражений для имен пользователей и паролей определены в system/config/system.yaml.

Шаблон по умолчанию для пользователей (system.username_regex) состоит только из символов нижнего регистра, цифр, дефисов и подчеркиваний. Имена пользователей должны содержать от 3 до 16 символов.

Шаблон по умолчанию для паролей (system.pwd_regex) состоит как минимум из восьми (8) символов, включая как минимум одну цифру, одну заглавную и одну строчную букву.

Использование⚓︎

По умолчанию вы можете получить доступ к администратору, указав в своем браузере на http://yoursite.com/admin. Вы можете просто войти в систему, используя имя_пользователя и пароль, заданные в YAML-файле, который вы настроили ранее.

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

\ No newline at end of file diff --git a/admin-panel/introduction/new-user.png b/admin-panel/introduction/new-user.png new file mode 100644 index 00000000..58ee477d Binary files /dev/null and b/admin-panel/introduction/new-user.png differ diff --git a/admin-panel/page/add.png b/admin-panel/page/add.png new file mode 100644 index 00000000..260b2ec5 Binary files /dev/null and b/admin-panel/page/add.png differ diff --git a/admin-panel/page/add2.png b/admin-panel/page/add2.png new file mode 100644 index 00000000..18484c13 Binary files /dev/null and b/admin-panel/page/add2.png differ diff --git a/admin-panel/page/add3.png b/admin-panel/page/add3.png new file mode 100644 index 00000000..b51efa37 Binary files /dev/null and b/admin-panel/page/add3.png differ diff --git a/admin-panel/page/advanced/index.html b/admin-panel/page/advanced/index.html new file mode 100644 index 00000000..c3a7dcef --- /dev/null +++ b/admin-panel/page/advanced/index.html @@ -0,0 +1 @@ + Редактор (экспертный) - Документация Grav CMS на русском
Перейти к содержанию

Редактор (экспертный)⚓︎

Редактор страниц

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

По сути, это универсальный инструмент для управления определенной страницей.

На этой странице мы рассмотрим функции и возможности вкладки Дополнительно в Редакторе страницы.

Для доступа к функциям страницы требуется уровень доступа access.admin.super или access.admin.pages.list. См. Учётные записи и Группы пользователей

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

Настройки⚓︎

Редактор страниц

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

Параметр Описание
Числовой префикс Числовой префикс, который обеспечивает настраиваемый порядок страниц и подразумевает видимость.
Имя папки Задает имя папки, в которой содержится страница.
Родитель Устанавливает родителя текущей страницы. Это может быть - Корневая - для страниц верхнего уровня или определённые страницы, чтобы они отображались как подстраницы.
Шаблон страницы Устанавливает шаблон (предоставленный темой) для применения к странице. Это напрямую влияет на внешний вид страницы.
Класс страницы Классы, введенные в это поле, применяются к основной части страницы.

Порядок⚓︎

Редактор страниц

Раздел Порядок дает вам возможность настроить порядок страниц ненумерованных папок.

Параметр Описание
Сортируемые страницы Позволяет настроить порядок страницы.

Переопределения⚓︎

Редактор страниц

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

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

Параметр Описание
Меню Строка, которая будет использоваться в меню. Если не установлен, будет использоваться Заголовок.
Псевдоним Позволяет вам специально установить часть URL-адреса страницы.
Обработка Процессы, которые вы хотели бы запустить и сделать доступными в содержимом страницы.
Шаблон отображения Устанавливает тип страницы по умолчанию для дочерних страниц.
Маршрутизируемая Устанавливает, доступна ли эта страница по URL-адресу. Если этот параметр отключен, страница не будет доступна для внешнего интерфейса.
Кэширование Включает или отключает кэширование для страницы.
Видимая Определяет, отображается ли страница в навигации.

Переадресация маршрута⚓︎

Редактор страниц

Параметр Описание
Маршрут по умолчанию Введите новый маршрут по умолчанию.
Канонический маршрут Введите новое значение, которое будет использоваться для канонической маршрутизации.
севдонимы маршрута Создайте псевдонимы маршрута.

Специальные переопределения⚓︎

Редактор страниц

Параметр Описание
Порядок отображения дочерних страниц Установите порядок отображения дочерних элементов. Вы можете выбрать имя папки или определение коллекции.
\ No newline at end of file diff --git a/admin-panel/page/advanced/page-advanced-admin.png b/admin-panel/page/advanced/page-advanced-admin.png new file mode 100644 index 00000000..3fbb88c3 Binary files /dev/null and b/admin-panel/page/advanced/page-advanced-admin.png differ diff --git a/admin-panel/page/advanced/page-advanced-ordering.png b/admin-panel/page/advanced/page-advanced-ordering.png new file mode 100644 index 00000000..b9d736cb Binary files /dev/null and b/admin-panel/page/advanced/page-advanced-ordering.png differ diff --git a/admin-panel/page/advanced/page-advanced-overrides.png b/admin-panel/page/advanced/page-advanced-overrides.png new file mode 100644 index 00000000..c0bbabf4 Binary files /dev/null and b/admin-panel/page/advanced/page-advanced-overrides.png differ diff --git a/admin-panel/page/advanced/page-advanced-route.png b/admin-panel/page/advanced/page-advanced-route.png new file mode 100644 index 00000000..6ca5061a Binary files /dev/null and b/admin-panel/page/advanced/page-advanced-route.png differ diff --git a/admin-panel/page/advanced/page-advanced-settings.png b/admin-panel/page/advanced/page-advanced-settings.png new file mode 100644 index 00000000..b0ae9a85 Binary files /dev/null and b/admin-panel/page/advanced/page-advanced-settings.png differ diff --git a/admin-panel/page/advanced/page-advanced.png b/admin-panel/page/advanced/page-advanced.png new file mode 100644 index 00000000..e811e3b8 Binary files /dev/null and b/admin-panel/page/advanced/page-advanced.png differ diff --git a/admin-panel/page/configuration/index.html b/admin-panel/page/configuration/index.html new file mode 100644 index 00000000..af5ffe14 --- /dev/null +++ b/admin-panel/page/configuration/index.html @@ -0,0 +1 @@ + Настройка - Документация Grav CMS на русском
Перейти к содержанию

Настройка⚓︎

Параметр Описание
Admin event compatibility Включает события onAdminSave и onAdminSaveAfter для плагинов. Включено по умолчанию.

Для получения дополнительной информации см. Объекты Flex.

Параметр Описание
Включить кэширование индекса Кэширование индекса ускоряет поиск за счёт создания временных индексов поиска для запросов.
Время жизни кэша индекса (в секундах) Время жизни для кэширования индекса в секундах.
Включить кэширование объектов Кэширование объектов ускоряет загрузку данных и изображений объекта..
Время жизни кэша объектов (в секундах) Время жизни для кеширования объектов в секундах.
Включить кэширование рендеринга Кэширование рендеринга ускоряет отрисовку контента за счёт кэширования результирующего HTML.
Время жизни кэша рендеринга (в секундах) Срок службы кэширования рендеринга в секундах.

Если визуализируемый HTML-код содержит динамическое содержимое, кэш рендеринга можно отключить из шаблона Twig с помощью {% do block.disableCache() %}.

\ No newline at end of file diff --git a/admin-panel/page/editor/index.html b/admin-panel/page/editor/index.html new file mode 100644 index 00000000..f948ff53 --- /dev/null +++ b/admin-panel/page/editor/index.html @@ -0,0 +1 @@ + Редактор (содержание) - Документация Grav CMS на русском
Перейти к содержанию

Редактор (содержание)⚓︎

Редактор страниц

Редактор страницы в админке — это мощный текстовый редактор и менеджер страниц, который позволяет вам создавать контент вашей страницы (включая медиафайлы), его параметры публикации и таксономии, настройки, переопределения и параметры для конкретной темы.

По сути, это универсальный инструмент для управления определенной страницей.

Для доступа к функциям страниц требуется уровень доступа access.admin.super или access.admin.pages.list. См Учётные записи и Группы пользователей

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

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

На этой странице мы рассмотрим функции и возможности вкладки Содержание в Редакторе страницы.

Управление⚓︎

Редактор страниц

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

Кнопки Сохранить и Удалить говорят сами за себя. Они соответственно сохраняют и удаляют текущую страницу.

При нажатии кнопки Переместить открывается всплывающее окно, в котором вы можете назначить странице нового родителя. У вас есть такая же опция на вкладке Дополнительно.

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

Заголовок⚓︎

Редактор страниц

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

Содержимое редактора страниц⚓︎

Редактор страниц

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

Например, вы можете переключаться между режимами редактирования и предварительного просмотра с помощью кнопок и , расположенных в верхнем правая область редактора.

Поскольку контент Grav в основном основан на Markdown, ярлыки редактирования автоматически добавляют теги Markdown к вашему контенту. Например, выделение блока текста и выбор значка B окружают выделенную область полужирными тегами (выделенная область).

Вот список инструментов редактора контента:

Инструмент Описание
Добавляет жирный текст.
Добавляет курсив.
Добавляет ~~зачёркивание~~.
Добавляет ссылки.
Добавляет медиа.
Добавляет цитаты.
Создает неупорядоченный список.
Создает упорядоченный список.
Активирует правку кода.
Активирует предварительный просмотр кода.
Переключает между полноэкранным редактированием и предварительным просмотром.

Вложения⚓︎

Редактор страниц

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

У вас уже есть медиафайлы, которые вы хотите вставить на свою страницу? Просто наведите курсор мыши на миниатюру изображения и перетащите изображение в редактор.

Вы также можете выбрать Вставить на миниатюре изображения. Это вставит медиа прямо в контент вашей страницы.

Вы также можете удалить медиафайлы, выбрав Удалить.

\ No newline at end of file diff --git a/admin-panel/page/editor/page-editor-1.png b/admin-panel/page/editor/page-editor-1.png new file mode 100644 index 00000000..5ab885b0 Binary files /dev/null and b/admin-panel/page/editor/page-editor-1.png differ diff --git a/admin-panel/page/editor/page-editor-2.png b/admin-panel/page/editor/page-editor-2.png new file mode 100644 index 00000000..59516304 Binary files /dev/null and b/admin-panel/page/editor/page-editor-2.png differ diff --git a/admin-panel/page/editor/page-editor-3.png b/admin-panel/page/editor/page-editor-3.png new file mode 100644 index 00000000..97358d78 Binary files /dev/null and b/admin-panel/page/editor/page-editor-3.png differ diff --git a/admin-panel/page/editor/page-editor-4.png b/admin-panel/page/editor/page-editor-4.png new file mode 100644 index 00000000..4b30e67c Binary files /dev/null and b/admin-panel/page/editor/page-editor-4.png differ diff --git a/admin-panel/page/editor/page-editor.png b/admin-panel/page/editor/page-editor.png new file mode 100644 index 00000000..5ab954e9 Binary files /dev/null and b/admin-panel/page/editor/page-editor.png differ diff --git a/admin-panel/page/index.html b/admin-panel/page/index.html new file mode 100644 index 00000000..3848e476 --- /dev/null +++ b/admin-panel/page/index.html @@ -0,0 +1 @@ + Страницы - Документация Grav CMS на русском
Перейти к содержанию

Страницы⚓︎

Страницы

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

Для доступа к функциям страниц требуется уровень доступа access.admin.super или access.admin.pages.list. См. Учётные записи и Группы пользователей

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

Добавление новых страниц⚓︎

Страницы

Три кнопки расположены в верхней части административной панели Управление страницами. Кнопка Назад возвращает вас на главную страницу админки, а кнопки Добавить страницу и Добавить модульный блок инициируют создание новых страниц для вашего сайта.

Ниже мы рассмотрим параметры, доступные при нажатии этих кнопок.

Добавление страницы⚓︎

Страницы

Кнопка Добавить страницу создает немодульную страницу для вашего сайта. После выбора появится всплывающее окно, позволяющее ввести Заголовок и Имя папки, назначить Родительскую страницу и Шаблон отображения, а также указать, должна ли страница быть видимой или скрытой.

Параметр Описание
Заголовок страницы Здесь вы вводите заголовок создаваемой страницы.
Имя папки Вы можете установить собственное имя папки для страницы или оставить автоматически созданное имя на основе заголовка.
Родительская страница Это устанавливает родительскую страницу для новой страницы. Может быть дочерним элементом другой страницы (например, домашней страницы или блога) или быть в корне вашего сайта. Установив значение опции child_type в начале родительской страницы, автоматически будет установлен Шаблон отображения по умолчанию. selected.
Шаблон страницы Вы можете выбрать, какой шаблон из темы вы хотите применить к странице.
Видимая Устанавливает, хотите ли вы, чтобы страница была видна в навигации. Можно установить на Авто, чтобы это определялось за вас. При автоматической настройке, если есть другая страница-брат, использующая числовой префикс, она использует его и поэтому видна. В противном случае он его не отображает.

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

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

Добавление модульной страницы⚓︎

Страницы

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

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

Параметр Описание
Заголовок страницы Устанавливает заголовок для модульной страницы.
Имя папки Вы можете установить собственное имя папки для страницы или оставить автоматически созданное имя на основе заголовка.
Страница Устанавливает родительскую страницу для новой модульной подстраницы. Это страница, на которой будет отображаться содержимое вашей новой модульной страницы.
Модульный шаблон Отображает список шаблонов, предоставленных темой для модульных страниц, из которых вы можете выбрать для новой страницы.

После того, как вы заполнили эту информацию, выбрав Продолжить, вы перейдете в редактор новой страницы. Мы рассмотрим редактор страниц более подробно в следующем руководстве.

Список страниц⚓︎

Страницы

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

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

Если вы наведете курсор на значок слева от страницы, он сообщит вам её текущий статус. Например, он может сказать Страница • Маршрутизируемая • Видимая, если страница является маршрутизируемой (видимой через URL-адрес) и видимой (отображается в меню навигации).

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

Если у вас есть определённый заголовок страницы (или часть заголовка), вы можете использовать панель поиска, чтобы быстро найти конкретную страницу, которую вы ищете.

\ No newline at end of file diff --git a/admin-panel/page/options/index.html b/admin-panel/page/options/index.html new file mode 100644 index 00000000..716b77c1 --- /dev/null +++ b/admin-panel/page/options/index.html @@ -0,0 +1 @@ + Редактор (опции) - Документация Grav CMS на русском
Перейти к содержанию

Редактор (опции)⚓︎

Редактор страниц

Редактор страницы в админке — это мощный текстовый редактор и менеджер страниц, который позволяет вам создавать контент вашей страницы (включая медиафайлы), его параметры публикации и таксономии, настройки, переопределения и параметры для конкретной темы.

По сути, это универсальный инструмент для управления определенной страницей.

На этой странице мы рассмотрим функции и возможности вкладки Опции в Редакторе страницы.

Для доступа к функциям страницы требуется уровень доступа access.admin.super или access.admin.pages.list. См. Учётные записи и Группы пользователей

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

Публикация⚓︎

Редактор страниц

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

Параметр Описание
Опубликовано По умолчанию страница публикуется, если вы явно не указали Publish: false или через publish_date в будущем или unpublish_date в прошлом.
Дата Переменная даты позволяет вам специально установить дату, связанную с этой страницей.
Дата публикации Это официальная дата публикации страницы. Он может предоставить дату для автоматического запуска публикации.
Дата снятия с публикации Это дата/время, которые вы хотите отметить, чтобы страница автоматически запускала отмену публикации.
Метаданные Значения метаданных по умолчанию, которые будут отображаться на каждой странице, если страница не отменена.

Таксономии⚓︎

Редактор страниц

В области «Таксономии» вы можете настроить организационные свойства своей страницы. Здесь можно настроить категории, в которых будет отображаться страница, её теги и многое другое.

Параметр Описание
Category Это поле позволяет вам установить одну или несколько категорий для страницы. Это полезно при сортировке и фильтрации контента.
Tag Теги — отличный способ дать представление о том, о чем ваша страница. Это полезно для сайтов, ориентированных на контент, в качестве механизма организации и фильтрации.
Month

Карта сайта⚓︎

Редактор страниц

Наличие хорошей и чистой карты сайта важно по нескольким причинам. Среди них - пользовательская навигация и поисковая оптимизация (SEO). Наличие карты сайта делает ваш сайт более удобным для поисковых систем, что может иметь прямое влияние на рейтинг.

Эта область страницы параметров доступна, только если вы установили плагин Sitemap.

Параметр Описание
Частота обновления карты сайта В этом раскрывающемся списке можно установить частоту обновления карты сайта страницы. Это может время, когда вносятся изменения: ежечасно, ежедневно, еженедельно, ежемесячно, ежегодно или никогда. По умолчанию используются глобальные параметры карты сайта.
Приоритет карты сайта Устанавливает приоритет этой страницы в вашей карте сайта.
\ No newline at end of file diff --git a/admin-panel/page/options/page-options-publishing.png b/admin-panel/page/options/page-options-publishing.png new file mode 100644 index 00000000..17fcfd27 Binary files /dev/null and b/admin-panel/page/options/page-options-publishing.png differ diff --git a/admin-panel/page/options/page-options-sitemap.png b/admin-panel/page/options/page-options-sitemap.png new file mode 100644 index 00000000..6e0b89ed Binary files /dev/null and b/admin-panel/page/options/page-options-sitemap.png differ diff --git a/admin-panel/page/options/page-options-taxonomies.png b/admin-panel/page/options/page-options-taxonomies.png new file mode 100644 index 00000000..c41c6f6d Binary files /dev/null and b/admin-panel/page/options/page-options-taxonomies.png differ diff --git a/admin-panel/page/options/page-options.png b/admin-panel/page/options/page-options.png new file mode 100644 index 00000000..bd349e82 Binary files /dev/null and b/admin-panel/page/options/page-options.png differ diff --git a/admin-panel/page/pages.png b/admin-panel/page/pages.png new file mode 100644 index 00000000..449b2875 Binary files /dev/null and b/admin-panel/page/pages.png differ diff --git a/admin-panel/page/pages2.png b/admin-panel/page/pages2.png new file mode 100644 index 00000000..95c88b6c Binary files /dev/null and b/admin-panel/page/pages2.png differ diff --git a/admin-panel/page/permissions/index.html b/admin-panel/page/permissions/index.html new file mode 100644 index 00000000..1939d830 --- /dev/null +++ b/admin-panel/page/permissions/index.html @@ -0,0 +1 @@ + Разрешения страницы - Документация Grav CMS на русском
Перейти к содержанию

Разрешения страницы⚓︎

Разрешения пользователя/группы для страниц:

Параметр Значение Описание
Настройка admin.configuration Предоставляет пользователю доступ к области Настройка.
    Настройка страниц admin.configuration.pages Предоставляет пользователю доступ к области Настройка страниц внутри раздела Страницы.
Страницы admin.pages Предоставляет пользователю доступ к области Страницы.
    Создание admin.pages.create Предоставляет пользователю доступ к Созданию страниц.
    Просмотр admin.pages.read Предоставляет пользователю доступ к Просмотру страниц.
    Обновление admin.pages.update Предоставляет пользователю доступ к Обновлению страниц.
    Удаление admin.pages.delete Предоставляет пользователю доступ к Удаление страниц.
    Список admin.pages.list Предоставляет пользователю доступ к области Страницы.

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

Начиная с Grav 1.7, вы можете и должны ограничивать CRUD доступ для отдельных страниц и их дочерних элементов непосредственно с самих страниц.

Возможные значения разрешений:

Параметр Значение Описание
Разрешено true Разрешает действие, если не установлен Запрет.
Запрещено false Запрещает действие. При наличии разрешения и запрета на одно и то же действие в приоритете Запрет.
Не задано null Никакого эффекта, но действует как Запрет, если никакие другие правила не применяются.

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

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

Рабочий процесс проверки доступа к странице CRUD⚓︎

Рабочий процесс проверки авторизации CRUD для отдельной страницы следующий:

  1. Задаем действие = Создание, Просмотр, Обновление, Удаление или Список
  2. Проходим через все группы страницы, начиная с текущей
  3. ищем совпадение со специальной группой authors, если пользователь указан в авторах страницы
  4. ищем совпадение со специальной группой defaults, если пользователь авторизован
  5. ищем совпадение с текущей группой, если пользователь тоже имеет группу
  6. если совпадение есть
    • если действие авторизации возвращает Запрещено: немедленно останавливаемся и возвращаем false
    • если действие авторизации возвращает Разрешено: задаем флаг allow = true
  7. продолжаем обработку следующей группы
  8. Пройдя через все группы, проверяем, есть ли у пользователя разрешение на это действие
  9. если флаг allow равен true: возвращаем true
  10. Проверяем права администратора глобальных страниц пользователя (только один раз)
  11. если действие авторизации возвращает Запрещено: возвращаем false
  12. если действие авторизации возвращает Разрешено: возвращаем true
  13. Проверяем, наследует ли страница родительские разрешения
  14. если Inherit Permissions = Yes, делаем те же проверки для родительской страницы
  15. иначе возвращаем null

Корневая страница⚓︎

Корневая страница — специальная страница в Grav 1.7+, которая позволяет администраторам сайта устанавливать разрешения по умолчанию для всех страниц. Его может увидеть только Суперпользователь или пользователь с правами Настройка страниц.

Корневая страница будет сохранена в файле user/pages/root.md и не будет содержать никакого контента, так как страница в настоящее время недоступна (это может измениться в будущем).

\ No newline at end of file diff --git a/admin-panel/page/security/index.html b/admin-panel/page/security/index.html new file mode 100644 index 00000000..8796d5cf --- /dev/null +++ b/admin-panel/page/security/index.html @@ -0,0 +1 @@ + Редактор (безопасность) - Документация Grav CMS на русском
Перейти к содержанию

Редактор (безопасность)⚓︎

Этот раздел определяет внешний доступ к странице.

Параметр Описание
Учитывать разрешения при отображении пункта в меню Установите значение Yes, если страница должна отображаться в меню, только если пользователь имеет к ним доступ..
Доступ Пользователь со следующими правами доступа может получить доступ к странице.

Этот раздел определяет административный доступ к странице.

CRUD ACL для конкретной страницы работает только с использованием групп пользователей. Кроме того, в нем есть две специальные группы с именами authors и defaults, которые предоставляют особый доступ владельцам страниц и резерв по умолчанию для всех вошедших в систему пользователей.

Параметр Описание
Наследовать разрешения Наследовать ACL от родительской страницы.
Авторы Члены указанной группы имеют доступ к этой странице на уровне владельца, определённый в специальной группе «Авторы».
Группы Члены указанных групп имеют особый доступ к этой странице.

Для получения дополнительной информации о том, как работают разрешения CRUD, см. раздел Разрешения страницы.

\ No newline at end of file diff --git a/admin-panel/plugins/index.html b/admin-panel/plugins/index.html new file mode 100644 index 00000000..f7d1e858 --- /dev/null +++ b/admin-panel/plugins/index.html @@ -0,0 +1 @@ + Обзор - Документация Grav CMS на русском
Перейти к содержанию

Плагины⚓︎

Плагины

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

На этой странице мы подробно рассмотрим эту область администратора, в том числе как активировать и деактивировать установленные плагины и с легкостью добавлять новые.

Для доступа к функциям плагинов требуется уровень доступа access.admin.super или access.admin.plugins.

Управление⚓︎

Плагины

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

Плагины

Кнопка Добавить переводит вас на страницу со списком всех доступных в настоящее время подключаемых модулей Grav, позволяя просмотреть информацию о них и установить их, выбрав кнопку «Установить» справа от нужного плагина.

Значок указывает на то, что плагин создан и поддерживается командой Grav. Плагины без этого значка были созданы сторонними разработчиками.

Установленные плагины⚓︎

Плагины

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

Плагины

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

При нажатии на названии плагина можно перейти на страницу настроек конкретного плагина.

\ No newline at end of file diff --git a/admin-panel/plugins/options/grav-options1.png b/admin-panel/plugins/options/grav-options1.png new file mode 100644 index 00000000..dd16042b Binary files /dev/null and b/admin-panel/plugins/options/grav-options1.png differ diff --git a/admin-panel/plugins/options/grav-options2.png b/admin-panel/plugins/options/grav-options2.png new file mode 100644 index 00000000..29a1c60e Binary files /dev/null and b/admin-panel/plugins/options/grav-options2.png differ diff --git a/admin-panel/plugins/options/grav-options3.png b/admin-panel/plugins/options/grav-options3.png new file mode 100644 index 00000000..7ea8aa75 Binary files /dev/null and b/admin-panel/plugins/options/grav-options3.png differ diff --git a/admin-panel/plugins/options/grav-options4.png b/admin-panel/plugins/options/grav-options4.png new file mode 100644 index 00000000..1085d979 Binary files /dev/null and b/admin-panel/plugins/options/grav-options4.png differ diff --git a/admin-panel/plugins/options/grav-options5.png b/admin-panel/plugins/options/grav-options5.png new file mode 100644 index 00000000..4482c184 Binary files /dev/null and b/admin-panel/plugins/options/grav-options5.png differ diff --git a/admin-panel/plugins/options/grav-options6.png b/admin-panel/plugins/options/grav-options6.png new file mode 100644 index 00000000..11e9d111 Binary files /dev/null and b/admin-panel/plugins/options/grav-options6.png differ diff --git a/admin-panel/plugins/options/index.html b/admin-panel/plugins/options/index.html new file mode 100644 index 00000000..6109e7f3 --- /dev/null +++ b/admin-panel/plugins/options/index.html @@ -0,0 +1 @@ + Параметры - Документация Grav CMS на русском
Перейти к содержанию

Параметры⚓︎

Параметры

Плагин админки имеет набор собственных опций, доступных в разделе Плагины. Чтобы познакомиться с ними, просто перейдите в Плагины > Admin Panel и нажмите на заголовок плагина. Откроется страница с полезными параметрами, которые помогут вам настроить работу админки.

Информация плагина⚓︎

Параметры

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

Это довольно стандартная функция на странице настроек любого плагина.

Basics | Основы⚓︎

Параметры

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

Мы разбили эти варианты и их функции ниже.

Параметр Описание
Включить кэширование админки Здесь можно включить или отключить кэширование самой админки, не влияющее на кэш CMS.
Administrator Path Здесь производится изменение пути к админке. Путь по умолчанию - /admin, но вы можете указать в этом поле всё, что захотите.
Logo Text Здесь вы определяете текст, который отображается в верхней части боковой панели админки.
Body Classes Хотите по-другому взглянуть на админку? Здесь вы можете добавить классы для тега body. Используйте пробел для разделения.
Sidebar Activation Выберите методы ** Tab ** или ** Hover ** для раскрытия боковой панели.
Hover Delay Установите время задержки, необходимое для наведения курсора на сжатую боковую панель для расширения в режиме Hover.
Sidebar Size В качестве размера боковой панели по умолчанию выберите Автоматический или Маленький.
Edit Mode Выберите редактор содержимого по умолчанию. По умолчанию доступны варианты Обычный и Эксперт.
Use Google Fonts Использование собственных шрифтов Google. Отключите это, чтобы использовать Helvetica. Полезно при использовании кириллицы и других языков с неподдерживаемыми символами.
Show GitHub Link Включить или отключить отображение блока «Нашли ошибку? Пожалуйста, сообщите об этом на GitHub».
Automatically Check for Updates Выберите автоматическую проверку обновлений для плагина Admin Panel.
Session Timeout Установите здесь тайм-аут сеанса (в секундах).

Dashboard | Главная страница админки⚓︎

Параметры

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

Параметр Описание
Maintenance Widget Включить или отключить отображение области Техническое обслуживание на дашборде.
Statistics Widget Включить или отключить отображение области Статистика на дашборде.
Notifications Feed Widget Включить или отключить отображение области Уведомления на дашборде.
News Feed Widget Включить или отключить отображение области Лента новостей на дашборде.
Latest Pages Widget Включить или отключить отображение области Последние обновлённые страницы на дашборде.

Notifications | Уведомления⚓︎

Параметры

В этом разделе можно включить или отключить определённые типы уведомлений. Вы можете отключить уведомления об обновлении ленты, а также уведомления о плагинах и/или темах.

Параметр Описание
Feed Notifications Включить или отключить уведомления ленты новостей.
Dashboard Notifications Включить или отключить уведомления дашборда.
Plugins Notifications Включить или отключить уведомления плагинов.
Themes Notifications Включить или отключить уведомления тем .

Popularity | Популярность⚓︎

Параметры

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

Параметр Описание
Visitor tracking Вы можете включить или отключить функцию отслеживания посетителей.
Days of stats Это поле позволяет задать количество дней хранения данных о посетителях на графике до их удаления.
Ignore Игнорируйте трафик на определённые URL-адреса вашего сайта. Например, /test' или '/modular
\ No newline at end of file diff --git a/admin-panel/plugins/plugins-1.png b/admin-panel/plugins/plugins-1.png new file mode 100644 index 00000000..13f41e59 Binary files /dev/null and b/admin-panel/plugins/plugins-1.png differ diff --git a/admin-panel/plugins/plugins-2.png b/admin-panel/plugins/plugins-2.png new file mode 100644 index 00000000..c32f3e0f Binary files /dev/null and b/admin-panel/plugins/plugins-2.png differ diff --git a/admin-panel/plugins/plugins-3.png b/admin-panel/plugins/plugins-3.png new file mode 100644 index 00000000..1acfa950 Binary files /dev/null and b/admin-panel/plugins/plugins-3.png differ diff --git a/admin-panel/plugins/plugins-4.png b/admin-panel/plugins/plugins-4.png new file mode 100644 index 00000000..f6617643 Binary files /dev/null and b/admin-panel/plugins/plugins-4.png differ diff --git a/admin-panel/plugins/plugins.png b/admin-panel/plugins/plugins.png new file mode 100644 index 00000000..cc616634 Binary files /dev/null and b/admin-panel/plugins/plugins.png differ diff --git a/admin-panel/security/2fa/2fa_1.jpeg b/admin-panel/security/2fa/2fa_1.jpeg new file mode 100644 index 00000000..9db29f9f Binary files /dev/null and b/admin-panel/security/2fa/2fa_1.jpeg differ diff --git a/admin-panel/security/2fa/2fa_2.jpeg b/admin-panel/security/2fa/2fa_2.jpeg new file mode 100644 index 00000000..9d5d0543 Binary files /dev/null and b/admin-panel/security/2fa/2fa_2.jpeg differ diff --git a/admin-panel/security/2fa/2fa_4.png b/admin-panel/security/2fa/2fa_4.png new file mode 100644 index 00000000..78608bde Binary files /dev/null and b/admin-panel/security/2fa/2fa_4.png differ diff --git a/admin-panel/security/2fa/2fa_5.png b/admin-panel/security/2fa/2fa_5.png new file mode 100644 index 00000000..2f661f29 Binary files /dev/null and b/admin-panel/security/2fa/2fa_5.png differ diff --git a/admin-panel/security/2fa/auth3.gif b/admin-panel/security/2fa/auth3.gif new file mode 100644 index 00000000..f665da1f Binary files /dev/null and b/admin-panel/security/2fa/auth3.gif differ diff --git a/admin-panel/security/2fa/index.html b/admin-panel/security/2fa/index.html new file mode 100644 index 00000000..19771630 --- /dev/null +++ b/admin-panel/security/2fa/index.html @@ -0,0 +1,3 @@ + Двухфакторная аутентификация - Документация Grav CMS на русском
Перейти к содержанию

Двухфакторная аутентификация⚓︎

Профиль администратора

Двухфакторная аутентификация (2FA) - отличная мера безопасности, использующая метод аутентификации в стиле скользящего времени. Этот метод генерирует шестизначные коды, которые вы можете использовать в дополнение к вашему имени пользователя и паролю для доступа к администратору.

Чтобы воспользоваться этой функцией, вам нужно загрузить приложение с поддержкой 2FA, например Authy или Google Authenticator. Это приложение будет действовать как виртуальная связка ключей для кодов аутентификации.

Как это настроить⚓︎

Настроить двухфакторную аутентификацию в Grav очень просто. Всё, что вам нужно сделать, это перейти к Плагины > Admin Panel > Basics в админке.

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

Теперь вы можете выбрать изображение своего аватара, чтобы получить доступ к настройкам профиля пользователя. Затем вы захотите установить для параметра 2FA Enabled значение Yes.

QR-код появится вместе с секретным ключом 2FA. Запишите ключ и положите его в безопасное место.

Используя любое приложение для аутентификации, отсканируйте QR-код или введите секретный ключ, чтобы зарегистрировать свой ключ 2FA. Сохраните страницу своего профиля, чтобы заблокировать настройки 2FA.

Теперь рядом с вашим именем на боковой панели появится фиолетовый значок 2FA. Этот значок сообщает, что в аккаунте активна двухфакторная аутентификация.

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

Это оно! Теперь у вас есть более безопасный сайт Grav!

Да, и если вы хотите изменить свой ключ 2FA, всё, что вам нужно сделать, это нажать большую красную кнопку Regenerate.

Часто задаваемые вопросы⚓︎

Что произойдет, если я потеряю доступ к своему устройству с двухфакторной аутентификацией?⚓︎

Не волнуйтесь! Еще не все потеряно.

Ваш статус 2FA и хешированный ключ хранятся в файловой системе вашего сайта в вашем пользовательском YAML-файле. Например, если ваша учетная запись пользователя - admin, перейдите к ROOT /user/accounts/admin.yaml и найдите эти две строки:

twofa_enabled: true
+twofa_secret: RQX46XTTBK7QMMB6VR4RAUNWOYVXXTSR
+

Просто установите для twofa_enabled значение false и сохраните. Теперь вы должны иметь доступ к своему сайту, используя только свое имя пользователя и пароль. Кроме того, вы можете использовать twofa_secret, чтобы зарегистрировать свою учетную запись в выбранном вами приложении-аутентификаторе.

Что делать, если мой ключ 2FA скомпрометирован?⚓︎

Если вы считаете, что ваш секретный ключ 2FA может быть скомпрометирован, можно сгенерировать новый ключ и сделать старый недействительным, нажав большую красную кнопку Regenerate в настройках вашего профиля пользователя в админке.

\ No newline at end of file diff --git a/admin-panel/security/2fa/page-header.jpg b/admin-panel/security/2fa/page-header.jpg new file mode 100644 index 00000000..1df1a558 Binary files /dev/null and b/admin-panel/security/2fa/page-header.jpg differ diff --git a/admin-panel/security/index.html b/admin-panel/security/index.html new file mode 100644 index 00000000..3690cd67 --- /dev/null +++ b/admin-panel/security/index.html @@ -0,0 +1 @@ + Обзор - Документация Grav CMS на русском
Перейти к содержанию

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

Grav предлагает дополнительную мощную защиту для вашей области администрирования, такую ​​как двухфакторная аутентификация и защита от флуда.

\ No newline at end of file diff --git a/admin-panel/security/rate-limiting/2fa_3.jpeg b/admin-panel/security/rate-limiting/2fa_3.jpeg new file mode 100644 index 00000000..066514f7 Binary files /dev/null and b/admin-panel/security/rate-limiting/2fa_3.jpeg differ diff --git a/admin-panel/security/rate-limiting/index.html b/admin-panel/security/rate-limiting/index.html new file mode 100644 index 00000000..a5108df8 --- /dev/null +++ b/admin-panel/security/rate-limiting/index.html @@ -0,0 +1 @@ + Защита от флуда - Документация Grav CMS на русском
Перейти к содержанию

Защита от флуда⚓︎

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

Функция защиты Grav от флуда (также известная как ограничение скорости) делает такие атаки исключительно сложными. Это позволяет вам установить количество неудачных попыток входа в систему в течение определенного периода времени, прежде чем учетная запись будет временно заблокирована. Кроме того, вы можете ограничить количество запросов на сброс пароля, применяемых к учетным записям, прежде чем блокировать эту функцию.

Что вам понадобится⚓︎

Эта функция управляется с помощью плагина Login. Требуются Login версии 2.4 или выше, Grav 1.3.3 или выше и Admin Panel 1.6.0 или выше.

Как это настроить⚓︎

Настройки для защиты от флуда находятся в плагине Login. Просто перейдите по вкладке Admin > Плагины > Login и выберите вкладку Безопасность.

Здесь вы можете установить следующее:

  • Максимальное количество сбросов пароля перед блокировкой.
  • Максимальный интервал сброса пароля
  • Максимальное количество неудачных входов до блокировки
  • Максимальный неудачный интервал входа в систему

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

\ No newline at end of file diff --git a/admin-panel/security/rate-limiting/login.gif b/admin-panel/security/rate-limiting/login.gif new file mode 100644 index 00000000..4708fb54 Binary files /dev/null and b/admin-panel/security/rate-limiting/login.gif differ diff --git a/admin-panel/themes/index.html b/admin-panel/themes/index.html new file mode 100644 index 00000000..672f5bd2 --- /dev/null +++ b/admin-panel/themes/index.html @@ -0,0 +1 @@ + Темы - Документация Grav CMS на русском
Перейти к содержанию

Темы⚓︎

Темы

Темы в админке - это то место, куда вы можете перейти, чтобы добавить темы вашего сайта и управлять ими.

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

Для доступа к функциям тем требуется уровень доступа access.admin.super илиaccess.admin.themes.

Управление⚓︎

Темы

В верхней части области Темы админки вы найдете кнопки Назад, Добавить и Проверить наличие обновлений.

Назад просто вернет вас либо на главную страницу админки, либо на главную страницу тем, если вы глубже погрузились в эту область админки.

Проверить наличие обновлений проверяет установленные темы на наличие обновлений.

Добавление новой темы⚓︎

Темы

Добавить вызывает отображение доступных в настоящее время тем Grav, которые вы можете добавить на свой сайт. Это быстрый и простой способ установить новую тему. Просто выберите кнопку Установить.

Темы

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

Вы также можете удалить тему со своего сайта, нажав красную кнопку ⚠ Удалить тему в правом нижнем углу панели.

Установленные темы⚓︎

Темы

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

Текущая активная тема обозначается значком Активная тема.

Вверху каждого эскиза вы увидите название и номер текущей версии каждой темы. Фиолетовый значок флажка указывает на то, что тема была создана командой Grav. Темы без этого значка создаются и поддерживаются сторонними разработчиками.

\ No newline at end of file diff --git a/admin-panel/themes/themes.png b/admin-panel/themes/themes.png new file mode 100644 index 00000000..f09f67ca Binary files /dev/null and b/admin-panel/themes/themes.png differ diff --git a/admin-panel/themes/themes1.png b/admin-panel/themes/themes1.png new file mode 100644 index 00000000..b6fc70e5 Binary files /dev/null and b/admin-panel/themes/themes1.png differ diff --git a/admin-panel/themes/themes2.png b/admin-panel/themes/themes2.png new file mode 100644 index 00000000..9c482c7a Binary files /dev/null and b/admin-panel/themes/themes2.png differ diff --git a/admin-panel/themes/themes3.png b/admin-panel/themes/themes3.png new file mode 100644 index 00000000..fc3cf0d7 Binary files /dev/null and b/admin-panel/themes/themes3.png differ diff --git a/admin-panel/themes/themes4.png b/admin-panel/themes/themes4.png new file mode 100644 index 00000000..af5bb3ff Binary files /dev/null and b/admin-panel/themes/themes4.png differ diff --git a/admin-panel/tools/index.html b/admin-panel/tools/index.html new file mode 100644 index 00000000..40fcb9d8 --- /dev/null +++ b/admin-panel/tools/index.html @@ -0,0 +1 @@ + Сервис - Документация Grav CMS на русском
Перейти к содержанию

Сервис⚓︎

Сервис

Бывают случаи, когда вы можете захотеть загрузить тему или пакет плагина, которого в настоящее время нет в основном каталоге плагинов Grav. Возможно, у вас есть тема премиум-класса, доступная в виде zip-файла, или вы разрабатываете плагин и хотите загрузить последнюю сборку в свою установку Grav для тестирования. В любом случае вы можете сделать это через FTP, но админка предлагает ещё более простое решение.

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

Как и в случае с любым другим процессом установки, мы рекомендуем создать последнюю резервную копию вашей установки Grav перед использованием этого инструмента - особенно если вы планируете использовать её для изменения всей вашей установки Grav.

Установка пакета через прямую загрузку ZIP-файла⚓︎

Сервис

Первый доступный метод прямой установки — это загрузка файла. Вы можете загрузить zip-пакет прямо в Grav, используя этот инструмент. Просто нажмите кнопку Обзор... (или перетащите свой zip-пакет на кнопку в некоторых браузерах) и выберите локальный файл пакета. После того, как вы выбрали файл, просто нажмите Загрузить и установить, чтобы установить пакет.

Сервис

После того, как ваш пакет будет успешно установлен, вы получите уведомление. Вот и всё!

Установка пакета через удаленный URL-адрес⚓︎

Сервис

Второй метод предполагает прямую ссылку на файл пакета. Например, если у вас есть пакет, размещенный на удаленном сервере, вы можете ввести URL-адрес этого пакета в поле. Ссылки для загрузки, удобные для GPM, такие как https://getgrav.org/download/themes/bootstrap/1.6.0, должны работать нормально.

По умолчанию эти загрузки ограничены официальными ссылками на репозиторий GPM. Но вы можете перейти в Настройка > Система и переключить опцию Только официальный GPM на Нет, чтобы разблокировать это поле и включить прямые ссылки на zip-пакеты, которые не являются официальными репозиториями GPM. Например: http://example.com/mypackage.zip. Это расширенная функция, которую следует использовать только в тех случаях, когда вы правильно проверили пакет как безопасный.

\ No newline at end of file diff --git a/admin-panel/tools/tools.png b/admin-panel/tools/tools.png new file mode 100644 index 00000000..47f4401e Binary files /dev/null and b/admin-panel/tools/tools.png differ diff --git a/admin-panel/tools/tools1.png b/admin-panel/tools/tools1.png new file mode 100644 index 00000000..025d8d3d Binary files /dev/null and b/admin-panel/tools/tools1.png differ diff --git a/admin-panel/tools/tools1b.png b/admin-panel/tools/tools1b.png new file mode 100644 index 00000000..0f2ac53c Binary files /dev/null and b/admin-panel/tools/tools1b.png differ diff --git a/admin-panel/tools/tools2.png b/admin-panel/tools/tools2.png new file mode 100644 index 00000000..72f3ca56 Binary files /dev/null and b/admin-panel/tools/tools2.png differ diff --git a/advanced/backups/index.html b/advanced/backups/index.html new file mode 100644 index 00000000..6ed207fa --- /dev/null +++ b/advanced/backups/index.html @@ -0,0 +1,42 @@ + Резервные копии - Документация Grav CMS на русском
Перейти к содержанию

Резервные копии⚓︎

Система резервного копирования в Grav была полностью переписана для Grav 1.6, чтобы обеспечить больше функций и возможностей. Улучшения включают:

  • Интеграция с новым Grav Scheduler, чтобы автономное резервное копирование могло запускаться, когда вы хотите
  • Возможность создания нескольких резервных ** профилей **, каждый со своим собственным набором файлов, исключая правила пути и файлов, а также настройку расписания
  • Новые возможности автоматической очистки на основе number, space или time.
  • Новая специальная страница резервного копирования в разделе Инструменты подключаемого модуля администратора.

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

Для обратной совместимости конфигурация по умолчанию имитирует систему до Grav 1.6, однако теперь она имеет ограничение в 5 ГБ по умолчанию для резервного пространства. Вы должны скопировать файл конфигурации по умолчанию (system/config/backups.yaml) в ваш user/config/

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

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

purge:
+    trigger: space
+    max_backups_count: 25
+    max_backups_space: 5
+    max_backups_time: 365
+
+profiles:
+  -
+    name: 'Default Site Backup'
+    root: '/'
+    schedule: false
+    schedule_at: '0 3 * * *'
+    exclude_paths: "/backup\r\n/cache\r\n/images\r\n/logs\r\n/tmp"
+    exclude_files: ".DS_Store\r\n.git\r\n.svn\r\n.hg\r\n.idea\r\n.vscode\r\nnode_modules"
+

Очистка⚓︎

  • space - удалит старые резервные копии, когда вы достигнете предельного места. Контролируется max_backups_space, измеряется в ГБ
  • time - удалит старые резервные копии, превышающие количество дней. Контролируется max_backups_time, измеряемым в днях.
  • number - удалит старые резервные копии сверх определенного количества. Контролируется max_backups_count.

Профили⚓︎

Можно настроить массив профилей. Профиль «Резервное копирование сайта по умолчанию» настроен аналогично профилю резервного копирования Grav по умолчанию в предыдущих версиях. По умолчанию резервное копирование не обрабатывается планировщиком автоматически, но вы можете установить schedule: true и настроить параметр schedule_at: с предпочтительным выражением cron.

Примером более сложного набора профилей может быть:

profiles:
+  -
+    name: 'Default Site Backup'
+    root: /
+    exclude_paths: "/backup\r\n/cache\r\n/images\r\n/logs\r\n/tmp"
+    exclude_files: ".DS_Store\r\n.git\r\n.svn\r\n.hg\r\n.idea\r\n.vscode\r\nnode_modules"
+    schedule: true
+    schedule_at: '0 4 * * *'
+  -
+    name: 'Pages Backup'
+    root: 'page://'
+    exclude_files: .git
+    schedule: true
+    schedule_at: '* 3 * * *'
+

Команда CLI⚓︎

Более подробно это описано в разделе Cli Console -> Grav Command, но вот пример запуска резервного копирования вручную:

cd ~/workspace/portfolio
+bin/grav backup
+
+Grav Backup
+===========
+
+Choose a backup?
+  [0] Default Site Backup
+  [1] Pages Backup
+
+Archiving 36 files [===================================================] 100% < 1 sec Done...
+
+ [OK] Backup Successfully Created: /users/joe/workspace/portfolio/backup/pages_backup--20190227120510.zip
+
\ No newline at end of file diff --git a/advanced/change-site-url/index.html b/advanced/change-site-url/index.html new file mode 100644 index 00000000..bb545ea3 --- /dev/null +++ b/advanced/change-site-url/index.html @@ -0,0 +1,13 @@ + Изменение URL-адреса сайта - Документация Grav CMS на русском
Перейти к содержанию

Изменение URL-адреса сайта⚓︎

Установив custom_base_url в system.yaml (или пользовательский базовый URL-адрес в системных настройках, в админке), мы можем держать Grav в папке, но запускать из корня домена.

Сценарий 1, запуск в корневой папке домена⚓︎

Grav установлен в http://localhost:8080/grav-develop, но вы хотите, чтобы он отвечал на http://localhost: 8080

В system.yaml установите

custom_base_url: 'http://localhost:8080'
+

и установите путь сеанса к новому пути к сайту Grav:

session:
+  path: /
+

И в корне домена установите перенаправление, например с .htaccess:

RewriteEngine On
+RewriteCond %{REQUEST_URI} !^/grav-develop/
+RewriteRule ^(.*)$ /grav-develop/$1
+

где grav-develop — это подпапка, в которой находится Grav.

Сценарий 2, запустить в другой подпапке⚓︎

Grav установлен в http://localhost:8080/grav-develop, но вы хотите, чтобы он отвечал на http://localhost:8080/xxxxx.

В system.yaml установите

custom_base_url: 'http://localhost:8080/xxxxx'
+

и установите путь сеанса к новому пути к сайту Grav:

session:
+  path: /xxxxx
+

И в новой корневой папке /xxxxx установите перенаправление, например с .htaccess:

RewriteEngine On
+RewriteCond %{REQUEST_URI} !^/grav-develop/
+RewriteRule ^(.*)$ /grav-develop/$1
+

где grav-develop — это дочерняя подпапка, в которой находится Grav.

\ No newline at end of file diff --git a/advanced/debugging/config.png b/advanced/debugging/config.png new file mode 100644 index 00000000..3a63e881 Binary files /dev/null and b/advanced/debugging/config.png differ diff --git a/advanced/debugging/console-dump.png b/advanced/debugging/console-dump.png new file mode 100644 index 00000000..a2fe2063 Binary files /dev/null and b/advanced/debugging/console-dump.png differ diff --git a/advanced/debugging/dump.png b/advanced/debugging/dump.png new file mode 100644 index 00000000..63715ce6 Binary files /dev/null and b/advanced/debugging/dump.png differ diff --git a/advanced/debugging/error.png b/advanced/debugging/error.png new file mode 100644 index 00000000..e20f4158 Binary files /dev/null and b/advanced/debugging/error.png differ diff --git a/advanced/debugging/error2.png b/advanced/debugging/error2.png new file mode 100644 index 00000000..6f8157b2 Binary files /dev/null and b/advanced/debugging/error2.png differ diff --git a/advanced/debugging/index.html b/advanced/debugging/index.html new file mode 100644 index 00000000..ad7a8e7e --- /dev/null +++ b/advanced/debugging/index.html @@ -0,0 +1,28 @@ + Отладка и ведение журнала - Документация Grav CMS на русском
Перейти к содержанию

Отладка и ведение журнала⚓︎

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

Панель отладки⚓︎

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

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

При первом включении панель отладки может появиться в виде небольшого значка Grav в нижнем левом углу страницы. При нажатии на нее отображается полная панель отладки.

Панель отладки PHP по-прежнему показывает общее время обработки, а также использование памяти, но теперь на ней есть несколько вкладок с более подробной информацией.

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

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

Команда дампа для PHP⚓︎

Если вы пытаетесь отладить какой-либо PHP, например настраиваемый плагин, который вы разрабатываете, и хотите быстро проверить какой-либо объект или переменную, вы можете использовать мощную команду dump(). Он принимает практически любую допустимую переменную PHP и выводит результаты в красиво отформатированном и раскрашенном виде в вашем браузере.

Например, вы можете легко выгрузить переменную или объект PHP:

<?php
+dump($myvariable);
+

и просмотрите результаты в своем браузере:

Вы также можете выгружать переменные на вкладку Сообщения панели отладки, используя синтаксис:

<?php
+$this->grav['debugger']->addMessage($myvariable)
+

Команда дампа для Twig⚓︎

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

twig:
+  debug: true # Включить отладчик Twig
+

Например, вы можете легко выгрузить переменную или объект Twig:

{{ dump(page.header) }}
+

и просмотрите результаты на панели отладки:

Можно одновременно выводить несколько команд дампа, но их можно запутать. Добавьте статический текст следующим образом:

{{ dump('page.header output:',page.header) }}
+

Дамп в консоль браузера из Twig⚓︎

Для отображения переменных до того, как страница будет возвращена Grav, или в случае, если обновление страницы не происходит, например, при использовании AJAX, есть другая альтернатива. Используя одну строку Javascript, можно отобразить любую переменную в консоли разработчика вашего браузера, например:

<script> console.log({{ page.header | json_encode | raw }}) </script>
+

Затем проверьте значение в консоли браузера:

Отображение ошибок⚓︎

На нашей новой странице отображения ошибок представлена ​​подробная информация, трассировки и даже соответствующие блоки кода. Это помогает быстрее выявлять, выявлять и устранять критические ошибки. По умолчанию в Grav 1.0+ они отключены по умолчанию, поэтому вам нужно включить их, чтобы воспользоваться этой полезной обработкой ошибок для разработки:

errors:
+  display: true
+

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

errors:
+  display: false
+  log: true
+

Логирование⚓︎

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

$this->grav['log']->info('My informational message');
+$this->grav['log']->notice('My notice message');
+$this->grav['log']->debug('My debug message');
+$this->grav['log']->warning('My warning message');
+$this->grav['log']->error('My error message');
+$this->grav['log']->critical('My critical message');
+$this->grav['log']->alert('My alert message');
+$this->grav['log']->emergency('Emergency, emergency, there is an emergency here!');
+

Всё ваше сообщение будет добавлено в файл /logs/grav.log.

\ No newline at end of file diff --git a/advanced/debugging/timeline.png b/advanced/debugging/timeline.png new file mode 100644 index 00000000..800452e1 Binary files /dev/null and b/advanced/debugging/timeline.png differ diff --git a/advanced/debugging/twig-dump.png b/advanced/debugging/twig-dump.png new file mode 100644 index 00000000..5a80166d Binary files /dev/null and b/advanced/debugging/twig-dump.png differ diff --git a/advanced/debugging/twig.png b/advanced/debugging/twig.png new file mode 100644 index 00000000..d59b5559 Binary files /dev/null and b/advanced/debugging/twig.png differ diff --git a/advanced/environment-config/debugger-bar.png b/advanced/environment-config/debugger-bar.png new file mode 100644 index 00000000..04cfc34a Binary files /dev/null and b/advanced/environment-config/debugger-bar.png differ diff --git a/advanced/environment-config/debugger-dump.png b/advanced/environment-config/debugger-dump.png new file mode 100644 index 00000000..bf2f620a Binary files /dev/null and b/advanced/environment-config/debugger-dump.png differ diff --git a/advanced/environment-config/debugger-exception.png b/advanced/environment-config/debugger-exception.png new file mode 100644 index 00000000..398b7ce9 Binary files /dev/null and b/advanced/environment-config/debugger-exception.png differ diff --git a/advanced/environment-config/index.html b/advanced/environment-config/index.html new file mode 100644 index 00000000..ce31fdc6 --- /dev/null +++ b/advanced/environment-config/index.html @@ -0,0 +1,84 @@ + Конфигурация окружения - Документация Grav CMS на русском
Перейти к содержанию

Конфигурация окружения⚓︎

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

Среды до Grav 1.6 хранились в папке user/. Grav 1.7 перемещает среду в user/env/, чтобы упростить обслуживание среды. Настоятельно рекомендуется переместить все среды в это новое место на существующих сайтах.

Автоматическая настройка окружения⚓︎

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

user/config/system.yaml
+

Если вы хотите включить её, можно сделать это через файл user/config/system.yaml, однако лучшим решением может быть enabled для вашей среды разработки при доступе через localhost, но disabled на вашем рабочем сервере.

Этого можно легко добиться, переопределив этот параметр в файле:

user/env/localhost/config/system.yaml
+

где localhost - это имя хоста среды (это хост, который вы вводите в браузере, например, http://localhost/your-site), а ваш файл конфигурации содержит:

debugger:
+  enabled: true
+

Точно так же вы можете включить конвейерную обработку ресурсов CSS, Link, JS и JS-модулей (объединение + минификация) только для вашего рабочего сайта (user/env/www.mysite.com/config/system.yaml):

assets:
+  css_pipeline: true
+  js_pipeline: true
+  js_module_pipeline: true
+

Если к вашему производственному серверу можно получить доступ через http://www.mysite.com, вы также можете указать конфигурацию, специфичную для этого производственного сайта, с помощью файла, расположенного по адресу user/env/www.mysite.com/config/system.yaml.

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

Если вы используете Планировщик, помните об этом, используя среду localhost и, следовательно, её конфигурацию.

Переопределения плагинов⚓︎

Переопределение YAML-файла конфигурации плагина — это просто тот же процесс, что и переопределение обычного файла. Если стандартный файл конфигурации находится в:

user/config/plugins/email.yaml
+

Затем вы можете переопределить это с помощью параметра, который отменяет только определённые параметры, которые вы хотите использовать для локального тестирования:

user/env/localhost/config/plugins/email.yaml
+

С конфигурацией:

mailer:
+  engine: smtp
+  smtp:
+    server: smtp.mailtrap.io
+    port: 2525
+    encryption: none
+    user: '9a320798e65135'
+    password: 'a13e6e27bc7205'
+

Переопределения тем⚓︎

Вы можете переопределить темы примерно таким же образом:

user/config/themes/antimatter.yaml
+

Может быть переопределено для любой среды, скажем, на каком-то производственном сайте (http://www.mysite.com):

user/env/www.mysite.com/config/themes/antimatter.yaml
+

Конфигурация среды на основе сервера⚓︎

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

Самый простой способ установить среду - использовать GRAV_ENVIRONMENT. Значение GRAV_ENVIRONMENT должно быть действительным именем сервера с доменом или без него.

В следующем примере для локального хоста выбирается среда разработки (development):

<VirtualHost 127.0.0.1:80>
+    ...
+
+    SetEnv GRAV_ENVIRONMENT development
+</VirtualHost>
+
location / {
+    ...
+
+    fastcgi_param GRAV_ENVIRONMENT development;
+}
+
location / {
+    ...
+
+    env[GRAV_ENVIRONMENT] = development
+}
+
web:
+environment:
+    - GRAV_ENVIRONMENT=development
+
<?php
+// Set environment in setup.php or make sure it runs before Grav.
+define('GRAV_ENVIRONMENT', 'development');
+

Пользовательские пути к среде⚓︎

Начиная с Grav 1.7, вы также можете изменить расположение локаций. Есть две возможности: либо вы настраиваете общее расположение для всех сред, либо определяете их одну за другой.

Пользовательское расположение для всех сред⚓︎

Если по какой-то причине вас не устраивает расположение по умолчанию user/env для вашей среды, его можно изменить, используя переменную окружения GRAV_ENVIRONMENTS_PATH.

Значение GRAV_ENVIRONMENTS_PATH должно быть существующим путем в GRAV_ROOT. Не используйте завершающую косую черту.

В следующем примере все среды будут расположены в user/sites/GRAV_ENVIRONMENT, где GRAV_ENVIRONMENT либо автоматически определяется, либо устанавливается вручную в конфигурации сервера:

<VirtualHost 127.0.0.1:80>
+    ...
+
+    SetEnv GRAV_ENVIRONMENTS_PATH user://sites
+</VirtualHost>
+
location / {
+    ...
+
+    fastcgi_param GRAV_ENVIRONMENTS_PATH user://sites;
+}
+
location / {
+    ...
+
+    env[GRAV_ENVIRONMENTS_PATH] = user://sites
+}
+
web:
+environment:
+    - GRAV_ENVIRONMENTS_PATH=user://sites
+
<?php
+// Set environments path in setup.php or make sure that the following code runs before Grav.
+define('GRAV_ENVIRONMENTS_PATH', 'user://sites');
+

Пользовательское местоположение для текущей среды⚓︎

Иногда может быть полезно иметь настраиваемое местоположение для вашей среды

Значение GRAV_ENVIRONMENT_PATH должно быть существующим путем в GRAV_ROOT. Не используйте завершающую косую черту.

В следующем примере только текущая среда будет расположена в user/development:

<VirtualHost 127.0.0.1:80>
+    ...
+
+    SetEnv GRAV_ENVIRONMENT_PATH user://development
+</VirtualHost>
+
location / {
+    ...
+
+    fastcgi_param GRAV_ENVIRONMENT_PATH user://development;
+}
+
location / {
+    ...
+
+    env[GRAV_ENVIRONMENT_PATH] = user://development
+}
+
web:
+environment:
+    - GRAV_ENVIRONMENT_PATH=user://development
+
<?php
+// Set environment path in setup.php or make sure that the following code runs before Grav.
+define('GRAV_ENVIRONMENT_PATH', 'user://development');
+

Обратите внимание, что GRAV_ENVIRONMENT_PATH отделен от GRAV_ENVIRONMENT, поэтому вы также можете захотеть установить имя среды, если вы не хотите, чтобы оно автоматически совпадало с текущим именем домена.

Дальнейшая настройка⚓︎

Среды можно настраивать гораздо больше, чем описано на этой странице.

Для получения дополнительной информации перейдите на следующую страницу: Настройка мультисайта.

\ No newline at end of file diff --git a/advanced/flex/administration/configuration/index.html b/advanced/flex/administration/configuration/index.html new file mode 100644 index 00000000..bb8a593c --- /dev/null +++ b/advanced/flex/administration/configuration/index.html @@ -0,0 +1 @@ + Настройка - Документация Grav CMS на русском
Перейти к содержанию

Настройка⚓︎

Настройка содержит общие настройки для Flex-каталога.

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

Настройки разные в каждом каталоге, этот документ содержит только общие настройки, которые можно найти в каждом каталоге.

Элементы управления⚓︎

Вверху страницы вы найдете административные элементы управления.

Вкладка «Кэширование»⚓︎

Параметр Описание
Enable Index Caching Кэширование индекса ускоряет поиск за счёт создания временных индексов поиска для запросов.
Index Cache Lifetime (seconds) Время жизни для кэширования индекса в секундах.
Enable Object Caching Кэширование объектов ускоряет загрузку данных и изображений объекта.
Object Cache Lifetime (seconds) Время жизни для кэширования объектов в секундах.
Enable Render Caching Кэширование рендеринга ускоряет отрисовку контента за счёт кэширования результирующего HTML.
Render Cache Lifetime (seconds) Срок службы кэширования рендеринга в секундах.

Если визуализированный HTML-код имеет динамическое содержимое, кеш визуализации можно отключить в шаблоне Twig с помощью {% do block.disableCache() %}.

\ No newline at end of file diff --git a/advanced/flex/administration/index.html b/advanced/flex/administration/index.html new file mode 100644 index 00000000..5d180b2f --- /dev/null +++ b/advanced/flex/administration/index.html @@ -0,0 +1 @@ + Управление - Документация Grav CMS на русском
Перейти к содержанию

Управление⚓︎

При использовании панели администрирования в Grav 1.7 вы уже задействуете Flex-объекты. Самыми лучшими примерами являются учётные записи и страницы.

По умолчанию управление Flex невидимо для пользователя. Чтобы увидеть каталог, он должен быть включен. Включенные каталоги могут отображаться либо в меню навигации, внутри пункта меню Flex-объекты или даже внутри других плагинов.

Плагин Flex-объекты должен быть включен для того, чтобы использовать любые пользовательские каталоги.

Включение каталога⚓︎

Для включения настраиваемого Flex-каталога вам нужно перейти в Плагины > Flex Objects.

Нас интересует параметр Directories в настройках плагина, который перечисляет все обнаруженные Flex-каталоги. Просто выберите интересующие вас каталоги и убедитесь, что переключатель установлен в положение Включено.

Нажмите Сохранить и каталог должен появиться после загрузки страницы.

См. Введение для получения полного пошагового руководства о том, как создать страницу для вашего каталога.

Список каталогов⚓︎

По умолчанию пункт меню Flex-объекты содержит почти все Flex-каталоги, которые были включены на вашем сайте.

Некоторые каталоги Flex отображаются в другом месте. Например, Учётные записи и Страницы.

Элементы управления⚓︎

В верхней части страницы вы найдете административные элементы управления.

Каталоги⚓︎

Когда вы выберете каталог, вы попадете в область Список контента.

В Списке контента вы можете просматривать объекты, использовать Поиск и изменять Порядок. Кроме того, каждый объект имеет Действия, в частности Редактирование и Удаление. Вы также можете добавлять новые объекты с помощью кнопки Добавить в верхней части любой страницы. Рядом с ним также находится кнопка Настройка для изменения настроек всего каталога.

Область Редактор контента позволяет редактировать объект и Сохранять изменения.

Область Настройка позволяет редактировать параметры, изменяющие поведение всего каталога. Обычно кэширование входит в число этих параметров.

\ No newline at end of file diff --git a/advanced/flex/administration/introduction/flex-objects-directory.png b/advanced/flex/administration/introduction/flex-objects-directory.png new file mode 100644 index 00000000..2a5534e3 Binary files /dev/null and b/advanced/flex/administration/introduction/flex-objects-directory.png differ diff --git a/advanced/flex/administration/introduction/flex-objects-options.png b/advanced/flex/administration/introduction/flex-objects-options.png new file mode 100644 index 00000000..2b72e6a5 Binary files /dev/null and b/advanced/flex/administration/introduction/flex-objects-options.png differ diff --git a/advanced/flex/administration/introduction/flex-objects-site.png b/advanced/flex/administration/introduction/flex-objects-site.png new file mode 100644 index 00000000..7c0e1836 Binary files /dev/null and b/advanced/flex/administration/introduction/flex-objects-site.png differ diff --git a/advanced/flex/administration/introduction/index.html b/advanced/flex/administration/introduction/index.html new file mode 100644 index 00000000..c18b8e9c --- /dev/null +++ b/advanced/flex/administration/introduction/index.html @@ -0,0 +1,3 @@ + Введение - Документация Grav CMS на русском
Перейти к содержанию

Введение⚓︎

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

Включение каталога⚓︎

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

Чтобы включить настраиваемый Flex-каталог, вам необходимо перейти в Плагины > Flex Objects.

Нас интересует параметр конфигурации Directories (Каталоги), в котором перечислены все обнаруженные Каталоги Flex. Найдите каталоги, которые вы хотите включить, и убедитесь, что опция Enabled (Включено) отмечена.

Для этой демонстрации давайте включим директорию Контакты и нажмем Сохранить вверху.

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

Установка демо-данных (необязательно)⚓︎

В нашем примере мы предполагаем, что вы скопировали образец набора данных для Каталога контактов:

$ cp user/plugins/flex-objects/data/flex-objects/contacts.json user/data/flex-objects/contacts.json
+

Создание страницы⚓︎

Перейдите в раздел Страницы и добавьте новую страницу. Введите следующие значения:

  • Заголовок страницы: Flex-Objects
  • Шаблон страницы: Flex-objects

После этого вы можете нажать кнопку Продолжить.

В Редакторе контента войдите в каталог и добавьте контент:

  • Flex-каталог: Contacts
  • Контент:
    # Directory Example
    +

Убедитесь, что ввели всё правильно, затем нажмите Сохранить.

Если вы не укажете Flex-каталог, на странице будут перечислены все каталоги вместо отображения записей из одного каталога.

Отображение страницы⚓︎

Перейдите на созданную вами страницу. Вы увидите следующую страницу, содержащую Контакты:

В случае, если вы не выбрали какой-либо каталог, вместо этого вы увидите следующее:

\ No newline at end of file diff --git a/advanced/flex/administration/views-edit/flex-objects-edit.png b/advanced/flex/administration/views-edit/flex-objects-edit.png new file mode 100644 index 00000000..adac81ef Binary files /dev/null and b/advanced/flex/administration/views-edit/flex-objects-edit.png differ diff --git a/advanced/flex/administration/views-edit/index.html b/advanced/flex/administration/views-edit/index.html new file mode 100644 index 00000000..05743dd9 --- /dev/null +++ b/advanced/flex/administration/views-edit/index.html @@ -0,0 +1 @@ + Редактор контента - Документация Grav CMS на русском
Перейти к содержанию

Редактор контента⚓︎

Edit View

Редактор контента — мощное представление в объектах Flex, которое позволяет создавать и обновлять тип контента.

Редактор может выглядеть по-разному с различными элементами управления, вкладками и полями форм, поскольку все они специфичны для типа каталога, который вы редактируете.

Элементы управления⚓︎

В верхней части страницы вы найдете административные элементы управления.

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

Редактирование формы⚓︎

Форма обычно организована по вкладкам и разделам, чтобы облегчить редактирование содержимого.

\ No newline at end of file diff --git a/advanced/flex/administration/views-list/flex-objects-list.png b/advanced/flex/administration/views-list/flex-objects-list.png new file mode 100644 index 00000000..1dcfba4d Binary files /dev/null and b/advanced/flex/administration/views-list/flex-objects-list.png differ diff --git a/advanced/flex/administration/views-list/index.html b/advanced/flex/administration/views-list/index.html new file mode 100644 index 00000000..4895b975 --- /dev/null +++ b/advanced/flex/administration/views-list/index.html @@ -0,0 +1 @@ + Список контента - Документация Grav CMS на русском
Перейти к содержанию

Список контента⚓︎

List View

Список контента обычно содержит разбитый на страницы список вашего контента, но некоторые каталоги, типа Страниц, могут иметь очень индивидуальный внешний вид.

Здесь вы можете создавать, редактировать и удалять свой контент. На странице также есть мощные инструменты для Поиска и Сортировки элементов.

Элементы управления⚓︎

Вверху страницы вы найдете административные элементы управления. Элементы управления могут отличаться в зависимости от типа Flex, но вот список некоторых из наиболее распространенных:

  • Назад: Вернуться на один уровень вверх, обычно в Дашборд или Список каталогов
  • Экспорт: Экспорт содержимого в файл, обычно в CSV
  • Добавить: Добавить новый элемент содержимого
  • Настройка: Изменить настройки каталога
  • Фильтр: Ввод текста для поиска
  • Кол-во объектов: Количество объектов для отображения
  • Порядок: Щелкните заголовок столбца, чтобы изменить порядок.
  • Пагинация: Быстро перемещаться по объектам

Одна строка⚓︎

  • Столбцы: Введите определённые столбцы для быстрого обзора объектов
  • Действия: Действия для одного объекта, обычно: Предварительный просмотр, Изменить, Удалить...
\ No newline at end of file diff --git a/advanced/flex/custom-types/blueprint/index.html b/advanced/flex/custom-types/blueprint/index.html new file mode 100644 index 00000000..cb464bbd --- /dev/null +++ b/advanced/flex/custom-types/blueprint/index.html @@ -0,0 +1,348 @@ + Чертёж - Документация Grav CMS на русском
Перейти к содержанию

Чертёж⚓︎

Базовая структура чертежа Flex содержит title,description и type, описывающие тип, и три раздела: config, blueprints и form, описывающие различные аспекты типа каталога.

Основная структура contacts.yaml:

title: Contacts
+description: Simple contact directory with tags.
+type: flex-objects  # do not change
+
+# Flex Configuration
+config: {}
+
+# Flex Directory Forms
+blueprints: {}
+
+# Flex Object Form
+form: {}
+

Чтобы создать свой собственный каталог, вам нужно начать с присвоения имени вашему type (имя файла) и заполненияtitle и description.

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

Мы предполагаем, что вы уже знаете, как создавать свои собственные формы и чертежи.

Лучше не использовать простой формат списка для описания полей, как указано в секции Создание простой формы. Также не передавайте в этот файл раздел формы process, он не будет использоваться Flex.

Секция Form⚓︎

В нашем примере с контактами раздел формы выглядит так:

# Flex Object Form
+form:
+  validation: loose
+
+  fields:
+    published:
+      type: toggle
+      label: Published
+      highlight: 1
+      default: 1
+      options:
+        1: PLUGIN_ADMIN.YES
+        0: PLUGIN_ADMIN.NO
+      validate:
+        type: bool
+        required: true
+
+    last_name:
+      type: text
+      label: Last Name
+      validate:
+        required: true
+
+    first_name:
+      type: text
+      label: First Name
+      validate:
+        required: true
+
+    email:
+      type: email
+      label: Email Address
+      validate:
+        required: true
+
+    website:
+      type: url
+      label: Website URL
+
+    tags:
+      type: selectize
+      size: large
+      label: Tags
+      classes: fancy
+      validate:
+        type: commalist
+

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

Будьте осторожны при изменении чертежа для существующего типа Flex. Убедитесь, что объекты, которые вы уже сохранили, совместимы с новой версией чертежа — это означает, что вы должны иметь возможность как сохранять, так и отображать старые объекты.

Мы ещё не закончили. Есть ещё две вещи, которые необходимо сделать, чтобы каталог заработал: нам нужно настроить уровень хранения данных и определить поля для отображения в представлении «Список администраторов». Мы можем сделать и то, и другое в секции config.

Секция Config⚓︎

Раздел конфигурации — самая сложная часть чертежа Flex, хотя большая часть его предназначена только для настройки. Он содержит разделы data, admin и site.

# Flex Configuration
+config:
+
+  # Data Settings
+  data: {}
+
+  # Admin Settings
+  admin: {}
+
+  # Site Settings
+  site: {}
+

Минимальная конфигурация выглядит примерно так:

# Flex Configuration
+config:
+
+  # Data Settings
+  data:
+    storage: user-data://flex-objects/contacts.json
+
+  # Admin Settings
+  admin:
+    # List view
+    list:
+      # List of fields to display
+      fields:
+        last_name:
+          link: edit # Edit link
+        first_name:
+          link: edit # Edit link
+        email:
+        website:
+

В конфигурации есть два обязательных раздела: config.data.storage и config.admin.list.fields. Последний определяет поля, отображаемые в представлении списка администраторов. С другой стороны, хранилище данных определяет, как данные будут храниться.

Config > Data⚓︎

Flex-каталог легко настраиваемый. Вы можете использовать свои классы object, collection и index для добавления собственного поведения. Кроме того, вы можете настроить уровень хранилища (storage) в соответствии с вашими потребностями. Справочник также имеет стандартные функции «упорядочивания» (ordering) и «поиска» (search).

config:
+  data:
+    # Flex Object Class
+    object: CLASSNAME
+    # Flex Collection Class
+    collection: CLASSNAME
+    # Flex Index Class
+    index: CLASSNAME
+    # Storage Options
+    storage: {}
+    # Ordering Options
+    ordering: {}
+    # Search Options
+    search: {}
+

Объект, коллекция и индекс принимают имена классов. Если они не указаны, Grav будет использовать следующую конфигурацию по умолчанию:

config:
+  data:
+    object: 'Grav\Common\Flex\Types\Generic\GenericObject'
+    collection: 'Grav\Common\Flex\Types\Generic\GenericCollection'
+    index: 'Grav\Common\Flex\Types\Generic\GenericIndex'
+

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

Одна из наиболее важных частей - определить, где и как хранятся данные:

config:
+  data:
+    storage:
+      class: 'Grav\Framework\Flex\Storage\SimpleStorage'
+      options:
+        formatter:
+          class: 'Grav\Framework\File\Formatter\JsonFormatter'
+        folder: user-data://flex-objects/contacts.json
+

Выше частный случай, который также можно записать в краткой форме:

config:
+  data:
+    storage: user-data://flex-objects/contacts.json
+

Grav 1.7 предоставляет 3 различных стратегии хранения, хотя вы можете легко создать свою собственную:

Название Класс Описание
Simple Storage Grav\Framework\Flex\Storage\SimpleStorage Все объекты хранятся в одном файле. Не поддерживает медиа.
File Storage Grav\Framework\Flex\Storage\FileStorage Объекты хранятся в отдельных файлах в одной папке.
Folder Storage Grav\Framework\Flex\Storage\FolderStorage Каждый объект хранится в отдельной папке.

Кроме того, вы можете указать формат файла с options.formatter.class:

Название Класс Описание
JSON Grav\Framework\File\Formatter\JsonFormatter Использовать формат файла JSON.
YAML Grav\Framework\File\Formatter\YamlFormatter Использовать формат файла YAML.
Markdown Grav\Framework\File\Formatter\MarkdownFormatter Использовать формат файла Grav Markdown с обложкой YAML.
Serialize Grav\Framework\File\Formatter\SerializeFormatter Использовать сериализатор PHP. Быстро, но не читается человеком.
INI Grav\Framework\File\Formatter\IniFormatter Использовать формат файла INI. Не рекомендуется.
CSV Grav\Framework\File\Formatter\CsvFormatter Использовать формат файла CSV. Не рекомендуется.

Параметры конфигурации (со значениями по умолчанию) для средств форматирования по умолчанию можно найти ниже во вкладках:

# JSON
+formatter:
+class: 'Grav\Framework\File\Formatter\JsonFormatter'
+options:
+    file_extension: '.json'
+    encode_options: '' # See https://www.php.net/manual/en/function.json-encode.php (separate options with space)
+    decode_assoc: true # Decode objects as arrays
+    decode_depth: 512  # Decode up to 512 levels
+    decode_options: '' # See https://www.php.net/manual/en/function.json-decode.php (separate options with space)
+
# YAML
+formatter:
+class: 'Grav\Framework\File\Formatter\YamlFormatter'
+options:
+    file_extension: '.yaml'
+    inline: 5           # Save with up to 4 expanded levels
+    indent: 2           # Indent with 2 spaces
+    native: true        # Use native YAML decoder if available
+    compat: true        # If YAML cannot be decoded, use compatibility mode (SLOW)
+
# Markdown
+formatter:
+class: 'Grav\Framework\File\Formatter\MarkdownFormatter'
+options:
+    file_extension: '.md'
+    header: 'header'    # Header variable eg. header.title
+    body: 'markdown'    # Body variable
+    raw: 'frontmatter'  # RAW YAML variable
+    yaml:
+    inline: 20        # YAML options, see YAML formatter from above
+
# PHP Serialize
+formatter:
+class: 'Grav\Framework\File\Formatter\SerializeFormatter'
+options:
+    file_extension: '.ser'
+    decode_options:
+    allowed_classes: ['stdClass'] # List of allowed / safe classes during unserialize
+
# INI
+formatter:
+class: 'Grav\Framework\File\Formatter\IniFormatter'
+options:
+    file_extension: '.ini'
+
# CSV
+formatter:
+class: 'Grav\Framework\File\Formatter\CsvFormatter'
+options:
+    file_extension: ['.csv', '.tsv']
+    delimiter: ','      # Delimiter to separate the values
+    mime: 'text/x-csv'  # MIME type for downloading file
+

Вы также можете установить порядок по умолчанию, который определяется парами key: ASC|DESC:

config:
+  data:
+    # Ordering Options
+    ordering:
+      key: ASC
+      timestamp: ASC
+

Наконец, вы можете добавить поля поиска, которые просматриваются при вызове collection.search():

config:
+  data:
+    search:
+      # Fields to be searched
+      fields:
+        - last_name
+        - first_name
+        - email
+      # Search Options
+      options:
+        - contains: 1   # If field contains the search string, assign weight 1 to the object
+

Fields содержат список полей для поиска.

Возможные варианты поиска:

Название Класс Описание
case_sensitive true или false Если true, все проверки чувствительны к регистру, по умолчанию false
same_as 0 ... 1 Значение поля должно совпадать со строкой поиска
starts_with 0 ... 1 Значение поля должно начинаться со строки поиска
ends_with 0 ... 1 Значение поля должно заканчиваться строкой поиска
contains 0 ... 1 Значение поля должно содержать строку поиска

Функция поиска возвращает 0, если поле не совпадает, и вес от 0 до 1, Если есть совпадение. Вес используется для упорядочения результатов поиска. Объект, который получает самое высокое ядро, имеет лучшее совпадение, чем объект с более низким баллом.

В настоящее время поиск не поддерживает наличие различных весов или стратегий для каждого поля.

Config > Admin⚓︎

Раздел Admin содержит различные параметры конфигурации для настройки администрирования каталога. Он содержит несколько основных разделов: router, actions, permissions, menu, template и views.

config:
+  # Admin Settings
+  admin:
+    # Admin router
+    router: {}
+    # Allowed admin actions
+    actions: {}
+    # Permissions
+    permissions: {}
+    # Admin menu
+    menu: {}
+    # Admin template type
+    template: pages
+    # Admin views
+    views: {}
+

Дополнительный раздел router можно использовать для настройки маршрутов администрирования Flex-каталога. Маршрутизация поддерживает базовый путь, настраиваемые маршруты для каждого действия, а также перенаправление для обработки, например, обратной совместимости. Все пути относятся к базовому URL-адресу администратора.

config:
+  admin:
+    # Admin router
+    router:
+      path: '/contacts' # Custom path to the directory
+      actions:
+        configure: # Action name
+          path: '/contacts/configure' # New path to the action.
+      redirects: # List of redirects (from: to)
+        '/flex-objects/contacts': '/contacts'
+

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

config:
+  admin:
+    # Allowed admin actions (for all users, including super user)
+    actions:
+      list: true   # Needs to be true (may change in the future)
+      create: true # Set to false to disable creating new objects
+      read: true   # Set to false to disable link to edit / details of the objects
+      update: false # Set to false to disable saving existing objects
+      delete: false # Set to false to disable deleting objects
+

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

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

config:
+  admin:
+    # Permissions
+    permissions:
+      # Primary permissions (used for the objects)
+      admin.contacts:
+        type: crudl # Create, Read, Update, Delete, List
+        label: Contacts Directory
+      # Secondary permissions (you need to assign these to a view, otherwise these will not be used)
+      admin.configuration.contacts:
+        type: default # Simple permission
+        label: Contacts Configuration
+

Если вы не хотите отображать свой каталог в администрировании Flex Objects, один из вариантов — отобразить пункт меню в основной навигации. Вы можете сделать это в секции menu.

config:
+  admin:
+    # Admin Menu
+    menu:
+      list:
+        hidden: false # If true, hide the menu item.
+        route: '/contacts' # Alias to `config.admin.router.path` if router path is not set.
+        title: Контакты
+        icon: fa-address-card-o
+        authorize: ['admin.contacts.list', 'admin.super'] # Authorization needed to access the menu item.
+        priority: 2 # Priority -10 .. 10 (highest goes up)
+

В приведенном выше примере создается пункт меню Контакты, указывающий на /admin/contacts.

Когда вы создаете свои собственные каталоги Flex, вам иногда может потребоваться использовать одни и те же шаблоны для всех ваших пользовательских каталогов. Вы можете сделать это с помощью template:

config:
+  admin:
+    # Admin template type (folder)
+    template: contacts
+

Flex Admin имеет несколько представлений для объектов. По умолчанию поддерживаются следующие представления: list, edit, configure и необязательные preview и export. Также возможно добавить свои собственные представления.

config:
+  admin:
+    views:
+      # List view
+      list: {}
+      # Edit view
+      edit: {}
+      # Configure view
+      configure: {}
+      # Preview
+      preview: {}
+      # Data Export
+      export: {}
+

Просмотр списка⚓︎

Первое представление, которое вам понадобится — это то, в котором перечислены все ваши объекты. По умолчанию представление list использует VueTable и AJAX для разбивки объектов на страницы. Ему нужен список «полей» (fields) для отображения, а также «параметры» (options), чтобы определить, сколько элементов отображается одновременно, а также поле по умолчанию, используемое для упорядочивания.

config:
+  admin:
+    views:
+      # List view
+      list:
+        icon: fa-address-card-o
+        title: Site Contacts
+        fields: {}        # See below
+        options:
+          per_page: 20    # Default number of items per page
+          order:
+            by: last_name # Default field used for ordering
+            dir: asc      # Default ordering direction
+

Icon и Title используются для настройки значка и заголовка страницы со списком. Title также поддерживает использование шаблона Twig в следующем формате:

        title:
+          template: "{{ 'PLUGIN_CONTACTS.CONTACTS_TITLE'|tu }}"
+

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

| Название | Значение | Пример | Описание | |------|-------|-------------| | width | integer | 8 | Ширина поля в пикселях | | alias | string | 'header.published' | Имя используемого поля формы. VueTable не любит точки в именах, поэтому установите псевдоним для вложенных переменных. | | field | array | | Переопределение поля формы. Написано так же, как и любое поле формы, но без ключа. | | link | string | 'edit' | Добавляет ссылку для редактирования в текст. | | search | boolean | true | Делает поле доступным для поиска в списке администрирования. | | sort | array | field: 'first_name' | Вы можете указать другое значение, если вы используете другое имя поля при запросе данных на стороне сервера, например first_name. | | title_class | string | 'center' | Классы CSS, используемые в заголовках. | | data_class | string | 'left' | Классы CSS, используемые в столбцах данных. |

Редактирование⚓︎

Режим редактирования имеет те же основные параметры конфигурации, что и режим просмотра списка:

config:
+  admin:
+    views:
+      # Edit view
+      edit:
+        icon: fa-address-card-o
+        title:
+          template: '{{ object.last_name ?? ''Last'' }}, {{ object.first_name ?? ''First Name'' }}'
+

Настройка⚓︎

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

config:
+  admin:
+    views:
+      # Configure view
+      configure:
+        hidden: false # Configuration button can be hidden, for example if you have custom tab to replace it, like in Accounts.
+        authorize: 'admin.configuration.contacts' # Optional custom authorize rule for this view.
+        file: 'config://flex/contacts.yaml' # Optional file where the configuration is saved.
+
+        icon: fa-cog
+        title:
+          template: "{{ directory.title }} {{ 'PLUGIN_ADMIN.CONFIGURATION'|tu }}"
+

Предварительный просмотр⚓︎

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

    # Preview View
+    preview:
+      enabled: true
+      route:
+        template: '/contacts' # Twig template to create URL. In this case we use the list view
+
+       icon: fa-address-card-o
+        title:
+          template: "{{ object.form.getValue('title') ?? object.title ?? key }}"
+

Экспорт⚓︎

Все объекты могут быть экспортированы в один файл. Вот пример конфигурации, как экспортировать данные в файл YAML:

    # Data Export
+    export:
+      enabled: true
+      method: 'jsonSerialize'
+      formatter:
+        class: 'Grav\Framework\File\Formatter\YamlFormatter'
+      filename: 'contacts'
+

Config > Site⚓︎

config:
+  # Site Settings
+  site:
+    templates:
+      collection:
+        # Lookup for the template layout files for collections of objects
+        paths:
+          - 'flex/{TYPE}/collection/{LAYOUT}{EXT}'
+      object:
+        # Lookup for the template layout files for objects
+        paths:
+          - 'flex/{TYPE}/object/{LAYOUT}{EXT}'
+      defaults:
+        # Default template variable {TYPE}; overridden by filename of this blueprint if template folder exists
+        type: contacts
+        # Default template variable {LAYOUT}; can be overridden in render calls (usually Twig in templates)
+        layout: default
+

Настройки шаблона позволяют настроить пути поиска шаблона и установить тип по умолчанию и имя макета во внешнем интерфейсе.

Чертежи⚓︎

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

blueprints:
+  # Blueprint for configure view.
+  configure:
+    # We are inside TABS field.
+    fields:
+      # Add our own tab
+      compatibility:
+        type: tab
+        title: Compatibility
+        fields:
+          # Fields should be prefixed with object, collection etc..
+          object.compat.events:
+            type: toggle
+            toggleable: true
+            label: Admin event compatibility
+            help: Enables onAdminSave and onAdminAfterSave events for plugins
+            highlight: 1
+            default: 1
+            options:
+              1: PLUGIN_ADMIN.ENABLED
+              0: PLUGIN_ADMIN.DISABLED
+            validate:
+              type: bool
+

Эти параметры конфигурации могут быть изменены в секции Настройка Администрирования Flex-каталога.

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

\ No newline at end of file diff --git a/advanced/flex/custom-types/index.html b/advanced/flex/custom-types/index.html new file mode 100644 index 00000000..4af99cd3 --- /dev/null +++ b/advanced/flex/custom-types/index.html @@ -0,0 +1 @@ + Пользовательские типы каталогов - Документация Grav CMS на русском
Перейти к содержанию

Пользовательские типы каталогов⚓︎

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

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

Основой Flex-типа является его чертеж. Чертеж определял как форму, так и поля объекта. Он также имеет некоторую дополнительную конфигурацию, которая может использоваться для настройки каталога и его объектов, где он отображается в панели администратора и ACL.

\ No newline at end of file diff --git a/advanced/flex/index.html b/advanced/flex/index.html new file mode 100644 index 00000000..ab690c13 --- /dev/null +++ b/advanced/flex/index.html @@ -0,0 +1 @@ + Обзор - Документация Grav CMS на русском
Перейти к содержанию

Объекты Flex⚓︎

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

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

Flex-каталоги в данной документации не имеют ничего общего с плагином Flex Directories. На самом деле старый плагин был заменен этой функцией вместе с плагином Flex Objects.

Введение⚓︎

Flex представляет собой набор каталогов одного типа. Grav имеет свои собственные встроенные типы, такие как учётные записи пользователей и страницы. Плагины и темы также могут определять свои собственные типы и регистрировать их в Grav. С помощью плагина Flex Objects вы также можете создавать свои собственные пользовательские типы и каталоги.

Flex⚓︎

Flex это контейнер для Flex-каталогов.

Это дает единую точку доступа для всех данных на сайте, учитывая, что данные находятся внутри каталога Flex. This makes all the objects available to every page and plugin in your site.

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

Тип Flex⚓︎

Тип Flex это чертеж для вашего Flex-каталога.

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

Flex-каталог⚓︎

Flex-каталог хранит коллекцию Flex-объектов одного Flex-типа.

Каждый каталог содержит коллекцию объектов с дополнительной поддержкой индексов для ускорения запросов к хранилищу.

Коллекция Flex⚓︎

Коллекция Flex это структура, которая содержит Flex-объекты.

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

Объект Flex⚓︎

Объект Flex является единичным экземпляром некоего Flex-типа.

Объект представляет собой единую сущность. Объект предоставляет доступ к своим свойствам, включая любые связанные данные, такие как Медиа. Объект также знает, как визуализировать себя или какую форму использовать для редактирования своего содержимого. Такие действия, как создание, обновление и удаление объектов, поддерживаются самим объектом.

Индекс Flex⚓︎

Индекс Flex используется для быстрого выполнения запросов к Flex-каталогу.

Содержит метаданные для объектов Flex, но не сами объекты.

Хранилище Flex⚓︎

Хранилище Flex является слоем хранения для Flex-объектов.

Это может быть один файл, набор файлов в одной папке или набор папок. Flex также поддерживает пользовательские хранилища, такие как хранилища баз данных.

Форма Flex⚓︎

Форма Flex интегрируется в плагин Form и позволяет создавать или редактировать Flex-объекты.

Flex поддерживает несколько видов, которые позволяют изменять различные части объекта.

Администрирование Flex⚓︎

Администрирование Flex реализуется плагином Flex Objects.

Он добавляет новый раздел в плагине админки, позволяющий администраторам сайта управлять объектами Flex. Каждый Flex-каталог поставляется со списком ACL типа CRUD, который можно использовать для ограничения доступа к различным областям админки и действий в них для определённых пользователей.

Текущие ограничения⚓︎

Впереди еще много работы. Вот текущие ограничения при рассмотрении вопроса об использовании объектов Flex:

  • Многоязычная поддержка была реализована только для страниц, также админка пока не может быть полностью переведена
  • Фронтенд имеет только базовую маршрутизацию; для ваших пользовательских задач, таких как сохранение, вам нужна ваша собственная реализация
  • Функции массового обновления ещё не были реализованы в админке
  • Из-за ограничений индексации не рекомендуется использовать Flex для объектов, которые постоянно обновляются
  • Настройка вашего типа Flex требует хороших знаний в области кодирования и создания собственных классов
\ No newline at end of file diff --git a/advanced/flex/using/collection/index.html b/advanced/flex/using/collection/index.html new file mode 100644 index 00000000..7a15d8bb --- /dev/null +++ b/advanced/flex/using/collection/index.html @@ -0,0 +1,584 @@ + Коллекция Flex - Документация Grav CMS на русском
Перейти к содержанию

Коллекция Flex⚓︎

Коллекция Flex — это упорядоченная карта объектов, которую также можно использовать как список.

Коллекция предоставляет несколько полезных методов, которые можно использовать для визуализации вывода, выборки объектов, фильтрации и сортировки и так далее.

Коллекция Flex расширяет Коллекции Doctrine.

Визуализация коллекции⚓︎

render()⚓︎

render( [layout], [context] ): Block Визуализирует коллекцию.

Параметры:

  • layout Название макета (string)
  • context Дополнительные переменные, которые можно использовать внутри файла шаблона Twig (array)

Возвращает:

  • Block (object) HTML-класс блока, содержащего вывод

В twig есть тег {% render %}, который следует использовать вместо прямого вызова метода. Это позволит активам JS/CSS из коллекции работать правильно.

{% set contacts = grav.get('flex').collection('contacts') %}
+{% set page = 2 %}
+{% set limit = 10 %}
+{% set start = (page - 1) * limit %}
+
+<h2>Contacts:</h2>
+
+{% render contacts.limit(start, limit) layout: 'cards' with { background: 'gray', color: 'white' } %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\ContentBlock\HtmlBlock;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+$page = 2;
+$limit = 10;
+$start = ($page-1)*$limit;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->limit($start, $limit);
+
+    /** @var HtmlBlock $block */
+    $block = $collection->render('cards', ['background' =>'gray', 'color' => 'white']);
+
+}
+

Манипуляции с коллекциями⚓︎

Все эти методы возвращают измененную копию коллекции. Исходная коллекция остается без изменений.

sort()⚓︎

sort( orderings ): Collection Отсортируйте коллекцию по списку пар свойство: направление (property: direction).

Параметры:

  • orderings Пары property: direction, где направление либо ASC, либо DESC (array)

Возвращает:

  • Collection (object) Новый отсортированный экземпляр коллекции

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

{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contacts = contacts.sort({last_name: 'ASC', first_name: 'ASC'}) %}
+
+<div>Displaying all contacts in alphabetical order:</div>
+{% render contacts layout: 'cards' %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->sort(['last_name' => 'ASC', 'first_name' => 'ASC']);
+    // Collection has now be sorted by last name, first name...
+
+}
+

limit()⚓︎

limit( start, limit ): Collection Вернуть подмножество коллекции, начиная с start и включая только limit объектов.

Параметры:

  • start Начальный индекс начиная с 0 (int)
  • limit Максимальное количество объектов (int)

Возвращает:

  • Collection (object) Новый отфильтрованный экземпляр коллекции
{% set contacts = grav.get('flex').collection('contacts') %}
+{% set page = 3 %}
+{% set limit = 6 %}
+{% set start = (page - 1) * limit %}
+
+{% set contacts = contacts.limit(start, limit) %}
+
+<div>Displaying page {{ page|e }}:</div>
+{% render contacts layout: 'cards' %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+$start = 0;
+$limit = 6;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->limit($start, $limit);
+    // Collection contains only the objects in the current page...
+
+}
+

filterBy()⚓︎

filterBy( filters ): Collection Фильтрация коллекции по списку пар свойство: значение (property: value).

Параметры:

  • filters Пары property: value, которые используются для фильтрации коллекции (array)

Возвращает:

  • Collection (object) Новый отфильтрованный экземпляр коллекции

Фильтрацию по умолчанию можно установить для внешнего интерфейса в чертежах Flex-типа.

{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contacts = contacts.filterBy({'published': true}) %}
+
+<div>Displaying only published contacts:</div>
+{% render contacts layout: 'cards' %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+$start = 0;
+$limit = 6;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->filterBy(['published' => true]);
+    // Collection contains only published objects...
+
+}
+

reverse()⚓︎

reverse(): Collection Поменять порядок объектов в коллекции на обратный.

Возвращает:

  • Collection (object) Новый перевернутый экземпляр коллекции

Если вы используете sort(), рекомендуется изменить порядок в нем, поскольку это экономит дополнительный шаг.

{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contacts = contacts.reverse() %}
+
+<div>Displaying contacts in reverse ordering:</div>
+{% render contacts layout: 'cards' %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+$start = 0;
+$limit = 6;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->reverse();
+    // Collection is now in reverse ordering...
+
+}
+

shuffle()⚓︎

shuffle(): Collection Перемешать объекты в случайном порядке.

Возвращает:

  • Collection (object) Новый случайно упорядоченный экземпляр коллекции
{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contacts = contacts.shuffle().limit(0, 6) %}
+
+<div>Displaying 6 random contacts:</div>
+{% render contacts layout: 'cards' %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->shuffle()->limit(0,6);
+    // Collection contains 6 random contacts...
+
+}
+

select()⚓︎

select( keys ): Collection Выбрать объекты (по их ключам) из коллекции.

Параметры:

  • keys Список ключей объекта, используемых для выбора объектов (array)

Возвращает:

  • Collection (object) Новый экземпляр коллекции
{% set contacts = grav.get('flex').collection('contacts') %}
+{% set selected = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'] %}
+
+{% set contacts = contacts.select(selected) %}
+
+<div>Displaying 4 selected contacts:</div>
+{% render contacts layout: 'cards' %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+$selected = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'];
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->select($selected);
+    // Collection now contains the 4 selected contacts...
+
+}
+

unselect()⚓︎

unselect( keys ): Collection Удалять предметы (по их ключам) из коллекции.

Параметры:

  • keys Список ключей объектов, используемых для удаления объектов (array)

Возвращает:

  • Collection (object) Новый экземпляр коллекции
{% set contacts = grav.get('flex').collection('contacts') %}
+{% set ignore = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'] %}
+
+{% set contacts = contacts.unselect(ignore) %}
+
+<div>Displaying all but 4 ignored contacts:</div>
+{% render contacts layout: 'cards' %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+$ignore = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'];
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->unselect($ignore);
+    // Collection now contains all but 4 ignored contacts...
+
+}
+

search( string, [properties], [options] ): Collection Поиск строки в коллекции.

Параметры:

  • string Строка для поиска (string)
  • properties Свойства для поиска, если null (или не указано), используйте значения по умолчанию (array или null)
  • options Дополнительные параметры, используемые при поиске (array)
    • starts_with: bool
    • ends_with: bool
    • contains: bool
    • case_sensitive: bool

Возвращает:

  • Collection (object) Новый отфильтрованный экземпляр коллекции
{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contacts = contacts.search('Jack', ['first_name', 'last_name', 'email'], {'contains': true}) %}
+
+<div>Displaying all search results for 'Jack':</div>
+{% render contacts layout: 'cards' %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->search('Jack', ['first_name', 'last_name', 'email'], ['contains' => true]);
+    // Collection now contains all search results...
+
+}
+

copy()⚓︎

copy(): Collection Создать копию из коллекции, клонировав все объекты в коллекции.

Возвращает:

  • Collection (object) Новый экземпляр коллекции, теперь с клонированными объектами

Если вы изменяете объекты в своей коллекции, вы всегда должны использовать копии!

{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contacts = contacts.shuffle().limit(0, 10) %}
+{% set fakes = contacts.copy() %}
+
+{% do fakes.setProperty('first_name', 'JACK') %}
+
+<h2>Fake cards</h2>
+{% render fakes layout: 'cards' %}
+
+<h2>Original cards</h2>
+{% render contacts layout: 'cards' %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    $collection = $collection->search('Jack', ['first_name', 'last_name', 'email'], ['contains' => true]);
+    // Collection now contains all search results...
+
+}
+

Итерация по коллекции⚓︎

Коллекции можно перебирать.

{% set contacts = grav.get('flex').collection('contacts') %}
+
+<h2>All contacts:</h2>
+<ul>
+{% for contact in contacts %}
+    <li>{{ contact.first_name|e }} {{ contact.last_name|e }}</li>
+{% endfor %}
+</ul>
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var FlexObjectInterface $object */
+    foreach ($collection as $object) {
+        // Do something with the object...
+    }
+
+}
+

first()⚓︎

first(): Object | false Устанавливает итератор на первый объект в коллекции и возвращает этот объект.

Возвращает:

  • Object (object) Первый объект
  • false Никаких предметов в коллекции нет
{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contact = contacts.first() %}
+
+{% if contact %}
+    <h2>First contact:</h2>
+    <div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>
+{% endif %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var FlexObjectInterface|false $object */
+    $object = $collection->first();
+    if ($object) {
+        // Do something with the object...
+    }
+
+}
+

last()⚓︎

last(): Object | false Устанавливает итератор на последний объект в коллекции и возвращает этот объект.

Возвращает:

  • Object (object) Последний объект
  • false Никаких предметов в коллекции нет
{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contact = contacts.last() %}
+
+{% if contact %}
+    <h2>Last contact:</h2>
+    <div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>
+{% endif %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var FlexObjectInterface|false $object */
+    $object = $collection->last();
+    if ($object) {
+        // Do something with the object...
+    }
+
+}
+

next()⚓︎

next(): object | false Перемещает позицию итератора к следующему объекту и возвращает этот элемент.

Возвращает:

  • Object (object) Следующий объект
  • false Больше никаких элементов в коллекции
{% set contacts = grav.get('flex').collection('contacts') %}
+{% set first = contacts.first() %}
+...
+
+{% set contact = contacts.next() %}
+
+{% if contact %}
+    <h2>Next contact is:</h2>
+    <div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>
+{% endif %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var FlexObjectInterface|false $object */
+    while ($object = $collection->next()) {
+        // Do something with the object...
+    }
+
+}
+

current()⚓︎

current(): object | false Возвращает объект коллекции в текущей позиции итератора.

Возвращает:

  • Object (object) Текущий объект
  • false Больше никаких элементов в коллекции
{% set contacts = grav.get('flex').collection('contacts') %}
+{% do contacts.next() %}
+{% do contacts.next() %}
+...
+
+{% set contact = contacts.current() %}
+
+{% if contact %}
+    <h2>Current contact is:</h2>
+    <div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>
+{% endif %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+    while ($collection->next()) {
+
+        /** @var FlexObjectInterface|false $object */
+        $object = $collection->current();
+        // Do something with the object...
+
+    }
+}
+

key()⚓︎

key(): key | null Возвращает ключ объекта в текущей позиции итератора.

Возвращает:

  • key (string) Ключ объекта
  • null Больше никаких элементов в коллекции
{% set contacts = grav.get('flex').collection('contacts') %}
+{% do contacts.next() %}
+{% do contacts.next() %}
+...
+
+{% set key = contacts.key() %}
+
+{% if key %}
+    Current contact key is: <strong>{{ key|e }}</strong>
+{% endif %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+    while ($collection->next()) {
+
+        $key = $collection->key();
+        // Do something with the key...
+
+    }
+}
+

Получение объекта/ключа⚓︎

Доступ к массиву⚓︎

Коллекции доступны так же, как ассоциативные массивы или карты.

Если объекта с данным ключом нет в коллекции, возвращается null.

{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contact = contacts['ki2ts4cbivggmtlj']
+
+{# Do something #}
+{% if contact %}
+{# Got Bruce Day #}
+Email for {{ contact.first_name|e }} {{ contact.last_name|e }} is {{ contact.email|e }}
+{% else %}
+Oops, contact has been removed!
+{% endif %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var FlexObjectInterface|null $object */
+    $object = $collection['ki2ts4cbivggmtlj'];
+    if ($object) {
+        // Object exists, do something with it...
+    }
+
+}
+

get()⚓︎

get( key ): Object | null Получает объект с указанным ключом.

Параметры:

  • key Ключ объекта (string)

Возвращает:

  • Object (object)
  • null Объект с данным ключом отсутствует в коллекции

Альтернатива — Доступ к массиву

{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set contact = contacts.get('ki2ts4cbivggmtlj')
+
+{# Do something #}
+{% if contact %}
+{# Got Bruce Day #}
+Email for {{ contact.first_name|e }} {{ contact.last_name|e }} is {{ contact.email|e }}
+{% else %}
+Oops, contact has been removed!
+{% endif %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var FlexObjectInterface|null $object */
+    $object = $collection->get('ki2ts4cbivggmtlj');
+    if ($object) {
+        // Object exists, do something with it...
+    }
+
+}
+

Коллекция как массив⚓︎

getKeys()⚓︎

getKeys(): array Получает все ключи коллекции.

Возвращает:

  • array Список ключей
{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set keys = contacts.keys() %}
+
+Keys are: {{ keys|join(', ')|e }}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var string[] $keys */
+    $keys = $collection->getKeys();
+    $keysList = implode(', ', $keys);
+
+}
+

GetObjectKeys()⚓︎

GetObjectKeys(): array Псевдоним метода getKeys().

Возвращает:

  • array Список ключей

getValues()⚓︎

getValues(): array Получает все объекты коллекции.

Преобразует коллекцию в массив. Ключи не сохраняются.

Возвращает:

  • Список объектов (array)
{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set list = contacts.values() %}
+<ol>
+{% for i,object in list %}
+    <li>#{{ (i+1)|e }}: {{ object.email|e }}</li>
+{% endfor %}
+</ol>
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var FlexObjectInterface[] $objects */
+    $objects = $collection->getValues();
+    foreach ($objects as $pos => $object) {
+        // Do something with the object and its position...
+    }
+
+}
+

toArray()⚓︎

toArray(): array Получает собственное представление коллекции в виде массива PHP.

То же, что и getValues​​(), но с сохранением ключей.

Возвращает:

  • array Список пар key: Object
{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set list = contacts.toArray() %}
+<ol>
+{% for key,object in list %}
+    <li>ID: {{ key|e }}: {{ object.email|e }}</li>
+{% endfor %}
+</ol>
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var array<string, FlexObjectInterface> $objects */
+    $objects = $collection->toArray();
+    foreach ($objects as $key => $object) {
+        // Do something with the object and its key...
+    }
+
+}
+

slice()⚓︎

slice( offset, length ): array Извлекает из коллекции length элементов, начиная с позиции offset.

Параметры:

  • offset Начальное смещение, начиная с 0 (int)
  • length Максимальное количество объектов (int)

Возвращает:

  • array Список пар key: Object

Этот метод можно использовать для нумерации страниц.

{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set list = contacts.slice(10, 5) %}
+
+<div>Displaying 5 emails starting from offset 10:</div>
+<ol>
+{% for key,object in list %}
+    <li>ID: {{ key|e }}: {{ object.email|e }}</li>
+{% endfor %}
+</ol>
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+
+    /** @var array<string, FlexObjectInterface> $objects */
+    $objects = $collection->slice(10, 5);
+
+    // Do something with the object and its key...
+
+}
+

chunk()⚓︎

chunk( size ): array Разбить коллекцию на части с максимальной вместимостью size объектов в каждой.

Параметры:

  • size Размер частей (int)

Возвращает:

  • array Двумерный список пар key: Object

Этот метод можно использовать для разделения содержимого на строки и столбцы.

{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set columns = contacts.limit(0, 10).chunk(5) %}
+
+<div>Displaying two columns of 5 emails each:</div>
+<div class="columns">
+{% for column,list in columns %}
+    <div class="column">
+    {% for object in list %}
+        <div>{{ object.email|e }}</div>
+    {% endfor %}
+    </div>
+{% endfor %}
+</div>
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = Grav::instance()->get('flex')->getCollection('contacts');
+if ($collection) {
+    /** @var array $columns */
+    $columns = $collection->limit(0, 10)->chunk(5);
+
+    /** @var
+        int $column
+        array<string, FlexObjectInterface> $objects
+    */
+    foreach ($columns as $column => $objects) {
+        // Do something with the objects...
+    }
+}
+

group()⚓︎

group( property ): array Сгруппировать объекты в коллекции по свойству и вернуть их в виде связанного массива.

Параметры:

  • property Имя свойства, которое используется для группировки объектов (string)

Возвращает:

  • array Двумерный список пар key: Object, где значение свойства является ключом первого уровня
{% set contacts = grav.get('flex').collection('contacts') %}
+
+{% set by_name = contacts.sort({last_name: 'ASC', first_name: 'ASC'}).group('last_name') %}
+
+<div>Displaying contacts grouped by last name:</div>
+<div>
+{% for last_name,list in by_name %}
+    {{ last_name|e }}:
+    <ul>
+    {% for object in list %}
+        <li>{{ object.first_name|e }}</li>
+    {% endfor %}
+    </ul>
+{% endfor %}
+</div>
+

```php <?php

use Grav\Common\Grav; use Grav\Framework\Flex\Interfaces\FlexCollectionInterface; use Grav\Framework\Flex\Interfaces\FlexObjectInterface;

/ @var FlexCollectionInterface|null $collection */ $collection = Grav::instance()->get('flex')->getCollection('contacts'); if ($collection) { / @var array $byName */ $byName = $collection->group('last_name');

/** @var
+    string $lastName
+    array<string, FlexObjectInterface> $objects
+*/
+foreach ($byName as $lastName => $objects) {
+    // Do something with the objects...
+}
+

}

```

Добавление и удаление объектов⚓︎

add()⚓︎

add( Object ) Добавляет объект в конец коллекции.

Параметры:

  • Object Объект для добавления (object)

remove()⚓︎

remove( key ): Object | null Удаляет элемент с указанным индексом из коллекции.

Параметры:

  • key Ключ объекта для удаления (object)

Возвращает:

  • Object Удаленный объект (object) или null, если объекта не существует

removeElement()⚓︎

removeElement( Object ): bool Удаляет указанный объект из коллекции, если он найден.

Параметры:

  • Object Объект, подлежащий удалению (object)

Возвращает:

  • true если объект был в коллекции, false если нет

clear()⚓︎

clear() Очищает коллекцию, удаляя все элементы.

Тесты⚓︎

containsKey()⚓︎

containsKey( key ): bool Проверяет, содержит ли коллекция объект с указанным ключом.

Параметры:

  • key Ключ для проверки (string)

Возвращает:

  • true если объект находится в коллекции, false если нет

contains()⚓︎

contains( object ): bool Проверяет, содержится ли элемент в коллекции.

Параметры:

  • Object Объект для тестирования (object)

Возвращает:

  • true если объект находится в коллекции, false если нет

indexOf()⚓︎

indexOf( object ): string | false Возвращает индекс/ключ данного объекта.

Параметры:

  • Object Объект для тестирования (object)

Возвращает:

  • string индекс/ключ объекта, false если объект не был найден

isEmpty()⚓︎

isEmpty(): bool Проверяет, пуста ли коллекция (не содержит объектов).

Возвращает:

  • true если коллекция пуста, false в противном случае

count()⚓︎

count(): int

Возвращает:

  • int Количество объектов в коллекции

Массовые действия для объектов⚓︎

hasProperty()⚓︎

hasProperty( property ): array Возвращает список пар key: boolean независимо от того, имеет ли объект с ключом определенное свойство или нет.

Параметры:

  • property Имя свойства (string)

Возвращает:

  • array пар key: bool, где key — ключ объекта, а bool либо true, либо false.

getProperty()⚓︎

getProperty( property, default ): array Возвращает список key: value для каждого объекта.

Параметры:

  • property Имя свойства (string)

Возвращает:

  • array пар key: value, где key — ключ объекта, а value — значение свойства.

setProperty()⚓︎

setProperty( property, value ): Collection Установить новое значение свойства для каждого объекта в коллекции.

Параметры:

  • property Имя свойства (string)
  • value Новое значение (mixed)

Возвращает:

  • Collection (object) Коллекция для цепочки вызовов методов.

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

defProperty()⚓︎

defProperty( property, default ): Collection Определить значение по умолчанию для свойства для каждого объекта в коллекции.

Параметры:

  • property Имя свойства (string)
  • default Значение по умолчанию (mixed)

Возвращает:

  • Collection (object) Коллекция для цепочки вызовов методов.

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

unsetProperty()⚓︎

unsetProperty( property ): Collection Удалить значение свойства для каждого объекта в коллекции.

Параметры:

  • property Имя свойства (string)

Возвращает:

  • Collection (object) Коллекция для объединения вызовов методов.

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

call()⚓︎

call( method, arguments): array Вызывает метод для каждого объекта в коллекции. Возвращает результаты каждого вызова.

Параметры:

  • method Имя метода (string)
  • arguments Список аргументов (array)

Возвращает:

  • Список пар key: result (array)

Если метод изменяет объект, пожалуйста, скопируйте коллекцию перед использованием этого метода.

getTimestamps()⚓︎

getTimestamps(): array Возвращает список пар key: timestamp для каждого объекта.

Возвращает:

  • Список пар key: timestamp, где timestamp — целое число (array)

getStorageKeys()⚓︎

getStorageKeys(): array Возвращает список пар key: storage_key для каждого объекта.

Возвращает:

  • Список пар key: storage_key (array)

getFlexKeys()⚓︎

getFlexKeys(): array Возвращает список пар key: flex_key для каждого объекта.

Возвращает:

  • Список пар key: flex_key (array)

withKeyField()⚓︎

withKeyField( field ): Collection Return new collection with a different key.

Параметры:

  • field Ключ поля (string)
    • 'key': Ключ по умолчанию, используемый каталогом
    • 'storage_key': Storage layer key
    • 'flex_key': Уникальный ключ, который можно использовать, не зная каталога

Возвращает:

  • Collection (object) Коллекция, проиндексированная новым ключом.

Closure Tests (только PHP)⚓︎

exists()⚓︎

exists( Closure ): bool Проверяет существование объекта, удовлетворяющего заданному предикату.

Параметры:

  • Closure Метод, используемый для проверки каждого объекта.

Возвращает:

  • bool true, если ваша функция обратного вызова возвращает true для всех объектов.

forAll()⚓︎

forAll( Closure ): bool Проверяет, выполняется ли данный предикат для всех объектов этой коллекции.

Параметры:

  • Closure Метод, используемый для проверки каждого объекта.

Возвращает:

  • bool true, если ваша функция обратного вызова возвращает true для всех объектов.

Closure Filtering (PHP only)⚓︎

filter()⚓︎

filter( Closure ): Collection Возвращает все объекты этой коллекции, удовлетворяющие предикату.

Порядок элементов сохраняется.

Параметры:

  • Closure Метод, используемый для проверки отдельного объекта.

Возвращает:

  • Collection (object) Новая коллекция со всеми объектами, для которых функция обратного вызова возвращает true.

map()⚓︎

map( Closure ): Collection Применяет данную функцию к каждому объекту в коллекции и возвращает новую коллекцию с объектами, возвращаемыми функцией.

Параметры:

  • Closure Метод, используемый для проверки отдельного объекта.

Возвращает:

  • Collection (object) Новая коллекция с объектами, возвращаемыми функцией обратного вызова.

collectionGroup()⚓︎

collectionGroup( property ): Collection[] Сгруппируйте объекты в коллекции по полю и верните их как связанный массив коллекций.

Параметры:

  • property (string) Свойство, используемое для группировки объектов.

Возвращает:

  • array Несколько коллекций в массиве, ключом является значение свойства.

matching()⚓︎

matching( Criteria ): Collection Выбирает все объекты, соответствующие выражению, и возвращает новую коллекцию, содержащую эти объекты.

Параметры:

Возвращает:

  • Collection (object) Новая коллекция с объектами, соответствующими критериям.

См. документацию Doctrine о Конструкторе выражений и ** Выражениях**.

orderBy()⚓︎

orderBy( array ): Collection Изменить порядок коллекции по списку пар свойство/значение.

Параметры:

  • array

Возвращает:

  • Collection (object) Новая коллекция с новым порядком.

partition()⚓︎

partition( Closure ): array Разбивает эту коллекцию на две коллекции в соответствии с предикатом.

Ключи сохраняются в полученных коллекциях.

Параметры:

  • Closure Метод, используемый для разделения одного объекта. Возвращает true или false.

Возвращает:

  • array Секционированные объекты [[a, b], [c, d, e]]
\ No newline at end of file diff --git a/advanced/flex/using/directory/index.html b/advanced/flex/using/directory/index.html new file mode 100644 index 00000000..f5f0a01b --- /dev/null +++ b/advanced/flex/using/directory/index.html @@ -0,0 +1,88 @@ + Каталог Flex - Документация Grav CMS на русском
Перейти к содержанию

Каталог Flex⚓︎

getTitle()⚓︎

getTitle(): string Получить название каталога

Возвращает:

  • string Заголовок
{% set directory = grav.get('flex').directory('contacts') %}
+
+<h2>{{ directory.title|e }}</h2>
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexDirectoryInterface;
+
+/** @var FlexDirectoryInterface|null $directory */
+$directory = Grav::instance()->get('flex')->getDirectory('contacts');
+if ($directory) {
+
+    /** @var string $title */
+    $title = $directory->getTitle();
+
+}
+

getDescription()⚓︎

getDescription(): string Получить описание каталога

Возвращает:

  • string Описание
{% set directory = grav.get('flex').directory('contacts') %}
+
+<p>{{ directory.description|e }}</p>
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexDirectoryInterface;
+
+/** @var FlexDirectoryInterface|null $directory */
+$directory = Grav::instance()->get('flex')->getDirectory('contacts');
+if ($directory) {
+
+    /** @var string $title */
+    $description = $directory->getDescription();
+
+}
+

getObject()⚓︎

getObject( id ): Object | null Получить объект или null, если объект не был найден.

Параметры:

  • id ID объекта (string)

Возвращает:

  • Object (object)
  • null Объект не найден
{% set directory = grav.get('flex').directory('contacts') %}
+
+{% set contact = directory.object('ki2ts4cbivggmtlj') %}
+
+{# Do something #}
+{% if contact %}
+{# Got Bruce Day #}
+Email for {{ contact.first_name|e }} {{ contact.last_name|e }} is {{ contact.email|e }}
+{% else %}
+Oops, contact has been removed!
+{% endif %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexDirectoryInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexDirectoryInterface|null $directory */
+$directory = Grav::instance()->get('flex')->getDirectory('contacts');
+if ($directory) {
+
+    /** @var FlexObjectInterface|null $object */
+    $object = $directory->getObject('ki2ts4cbivggmtlj');
+    if ($object) {
+        // Object exists, do something with it...
+    }
+
+}
+

Проверьте, что вы можете сделать с Объектом Flex

getCollection()⚓︎

getCollection(): Collection Получить коллекцию или null, если коллекция не была найдена.

Возвращает:

{% set directory = grav.get('flex').directory('contacts') %}
+
+{% set contacts = directory.collection() %}
+
+{# Do something #}
+<h2>Ten first contacts:</h2>
+<ul>
+{% for contact in contacts.filterBy({published: true}).limit(0, 10) %}
+    <li>{{ contact.first_name|e }} {{ contact.last_name|e }}</li>
+{% endfor %}
+</ul>
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexDirectoryInterface;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+
+/** @var FlexDirectoryInterface|null $directory */
+$directory = Grav::instance()->get('flex')->getDirectory('contacts');
+if ($directory) {
+
+    /** @var FlexCollectionInterface $collection */
+    $collection = $directory->getCollection();
+
+    // Do something with the collection...
+
+}
+

Проверьте, что вы можете сделать с Коллекцией Flex

\ No newline at end of file diff --git a/advanced/flex/using/flex/index.html b/advanced/flex/using/flex/index.html new file mode 100644 index 00000000..b8dde796 --- /dev/null +++ b/advanced/flex/using/flex/index.html @@ -0,0 +1,126 @@ + Flex - Документация Grav CMS на русском
Перейти к содержанию

Flex⚓︎

Полный список методов можно найти в разделе Настройка объектов Flex.

count()⚓︎

count(): int Подсчёт количества каталогов, зарегистрированных во Flex.

Возвращает: - int Количество Каталогов

{% set flex = grav.get('flex') %}
+
+Flex has {{ flex.count() }} enabled directories.
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexInterface;
+
+/** @var FlexInterface $flex */
+$flex = Grav::instance()->get('flex');
+
+/** @var int $count */
+$count = $flex->count();
+

getDirectories()⚓︎

getDirectories( [names] ): array Получить список каталогов.

Параметры: - names Необязательно: список имен каталогов (array)

Возвращает: - array список Каталогов

Если список имен не был предоставлен, метод возвращает все каталоги, зарегистрированные во Flex.

{% set flex = grav.get('flex') %}
+
+{# Get all directories #}
+{% set directories = flex.directories() %}
+
+{# Get listed directories #}
+{% set listed_directories = flex.directories(['contacts', 'phonebook']) %}
+
+{# Do something with the directories #}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexInterface;
+use Grav\Framework\Flex\Interfaces\FlexDirectoryInterface;
+
+/** @var FlexInterface $flex */
+$flex = Grav::instance()->get('flex');
+
+/** @var FlexDirectoryInterface[] $directories */
+$directories = $flex->getDirectories();
+// = ['contacts' => FlexDirectory, ...]
+
+/** @var FlexDirectoryInterface[] $directories */
+$listedDirectories = $flex->getDirectories(['contacts', 'phonebook']);
+// = ['contacts' => FlexDirectory]
+
+/** @var array<FlexDirectoryInterface|null> $directories */
+$listedDirectoriesWithMissing = $flex->getDirectories(['contacts', 'phonebook'], true);
+// = ['contacts' => FlexDirectory, 'phonebook' => null]
+

Вы можете убедиться, что возвращаете только те каталоги, которые хотите.

hasDirectory()⚓︎

hasDirectory( name ): bool: Проверить, существует ли каталог.

Параметры: - name Имя каталога (string)

Возвращает: - bool true, если найден, иначе false

{% set flex = grav.get('flex') %}
+
+Flex has {{ not flex.hasDirectory('contacts') ? 'not' }} contacts directory.
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexInterface;
+
+/** @var FlexInterface $flex */
+$flex = Grav::instance()->get('flex');
+
+/** @var bool $exists */
+$exists = $flex->hasDirectory('contacts');
+

getDirectory()⚓︎

getDirectory( name ): Directory | null Получить каталог, возвращает null, если он не был найден.

Параметры: - name Имя каталога (string)

Возвращает: - Каталог (object) - null Каталог не найден

{% set flex = grav.get('flex') %}
+
+{# Get contacts directory (null if not found) #}
+{% set directory = flex.directory('contacts') %}
+
+{# Do something with the contacts directory #}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexInterface;
+use Grav\Framework\Flex\Interfaces\FlexDirectoryInterface;
+
+/** @var FlexInterface $flex */
+$flex = Grav::instance()->get('flex');
+
+/** @var FlexDirectoryInterface|null $directory */
+$directory = $flex->getDirectory('contacts');
+if ($directory) {
+    // Directory exists, do something with it...
+}
+

Проверьте, что вы можете сделать с каталогом Flex

getObject()⚓︎

getObject( id, directory ): Object | null Получить объект, возвращает null, если он не был найден.

Параметры: - id ID объекта (string) - directory Имя каталога (string)

Возвращает: - Объект (object) - null Объект не найден

{% set flex = grav.get('flex') %}
+
+{% set contact = flex.object('ki2ts4cbivggmtlj', 'contacts') %}
+
+{# Do something #}
+{% if contact %}
+{# Got Bruce Day #}
+{{ contact.first_name|e }} {{ contact.last_name|e }} has a website: {{ contact.website|e }}
+{% else %}
+Oops, contact has been removed!
+{% endif %}
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexInterface;
+use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
+
+/** @var FlexInterface $flex */
+$flex = Grav::instance()->get('flex');
+
+/** @var FlexObjectInterface|null $object */
+$object = $flex->getObject('ki2ts4cbivggmtlj', 'contacts');
+if ($object) {
+    // Object exists, do something with it...
+}
+

Проверьте, что вы можете сделать с объектом Flex

getCollection()⚓︎

getCollection( directory ): Collection | null Получить коллекцию, возвращает null, если она не найдена.

Параметры: - directory Имя каталога (string)

Возвращает: - Коллекция (object) - null Каталог не найден

{% set flex = grav.get('flex') %}
+
+{% set contacts = flex.collection('contacts') %}
+
+{# Do something #}
+<h2>Ten random contacts:</h2>
+<ul>
+{% for contact in contacts.filterBy({published: true}).shuffle().limit(0, 10) %}
+    <li>{{ contact.first_name|e }} {{ contact.last_name|e }}</li>
+{% endfor %}
+</ul>
+
<?php
+
+use Grav\Common\Grav;
+use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
+use Grav\Framework\Flex\Interfaces\FlexInterface;
+
+/** @var FlexInterface $flex */
+$flex = Grav::instance()->get('flex');
+
+/** @var FlexCollectionInterface|null $collection */
+$collection = $flex->getCollection('contacts');
+if ($collection) {
+    // Collection exists, do something with it...
+}
+

Проверьте, что вы можете сделать с коллекцией Flex

\ No newline at end of file diff --git a/advanced/flex/using/index.html b/advanced/flex/using/index.html new file mode 100644 index 00000000..45f50698 --- /dev/null +++ b/advanced/flex/using/index.html @@ -0,0 +1,98 @@ + Использование объектов Flex - Документация Grav CMS на русском
Перейти к содержанию

Использование объектов Flex⚓︎

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

Чтобы включить и отобразить каталог Flex, пожалуйста, прочтите Включение каталога

Использование типа страницы flex-objects⚓︎

Отображение нескольких каталогов на странице directories/flex-objects.md:

title: Directories
+flex:
+  layout: default
+  list:
+    - contacts
+    - services
+---
+# Directories
+

В качестве альтернативы вы можете передать отдельные параметры для каждого каталога:

title: Directories
+flex:
+  layout: default
+  directories:
+    contacts:
+      collection:
+        title: '{{ directory.title }}'
+        layout: default
+        object:
+          layout: list-default
+      object:
+        title: 'Contact: {{ object.first_name }} {{ object.last_name }}'
+        layout: default
+    services:
+---
+# Directories
+

Отображение одного каталога на странице contacts/flex-objects.md:

title: Contacts
+flex:
+  directory: contacts
+  collection:
+    title: '{{ directory.title }}'
+    layout: default
+    object:
+      layout: list-default
+  object:
+    title: 'Contact: {{ object.first_name }} {{ object.last_name }}'
+    layout: default
+---
+# Contacts
+

Отображение одного объекта на странице my-contact/flex-objects.md:

title: Contact
+flex:
+  directory: contacts
+  id: ki2ts4cbivggmtlj
+  object:
+    title: 'Contact: {{ object.first_name }} {{ object.last_name }}'
+    layout: default
+---
+# Contacts
+

По умолчанию тип страницы flex-objects принимает два параметра URL-адреса: directory и id. Они используются для навигации по каталогам. Пример url-адресов выглядит следующим образом:

https://www.domain.com/directories/directory:contacts/id:ki2ts4cbivggmtlj
+
+https://www.domain.com/contacts/id:ki2ts4cbivggmtlj
+

Вы можете передать свои собственные параметры внутри flex и использовать их в своей коллекции и файлах шаблонов объектов.

Отрисовка коллекций и объектов⚓︎

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

{% render collection layout: 'custom' with { context_variable: true } %}
+
+{% render object layout: 'custom' with { context_variable: true } %}
+

Смотрите более подробную документацию: Визуализация коллекции и визуализация объекта.

Основы создания шаблонов⚓︎

Шаблоны Flex находятся в папке templates/flex:

templates/
+flex/
+contacts/
+collection/
+default.html.twig
+object/
+default.html.twig
+

У каждого типа есть две папки: одна для коллекции рендеринга, а другая — для объекта рендеринга. Файлы внутри — это макеты, названные по имени файла. В нашем примере у нас есть макет default как для коллекции, так и для объекта.

Шаблон коллекции⚓︎

Шаблон коллекции flex/contacts/collection/default.html.twig отвечает за рендеринг всех объектов в коллекции. Визуализированный вывод по умолчанию кэшируется. Ключ кэша определяется коллекцией и контекстом, передаваемым методу render().

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

Вот пример для Flex-типа «Контакты»:

<div id="flex-objects">
+  <div class="text-center">
+    <input class="form-input search" type="text" placeholder="Search by name, email, etc" />
+    <button class="button button-primary sort asc" data-sort="name">
+      Sort by Name
+    </button>
+  </div>
+
+  <ul class="list">
+    {% for object in collection.filterBy({ published: true }) %}
+      <li>
+        {% render object layout: layout with { options: options } %}
+      </li>
+    {% endfor %}
+  </ul>
+</div>
+
+<script>
+    var options = {
+        valueNames: [ 'name', 'email', 'website', 'entry-extra' ]
+    };
+    var flexList = new List('flex-objects', options);
+</script>
+

Если визуализированный HTML-код имеет динамическое содержимое, кэш визуализации можно отключить в шаблоне Twig с помощью {% do block.disableCache() %}.

Шаблон объекта⚓︎

Шаблон объекта flex/contacts/object/default.html.twig отвечает за рендеринг одного объекта. Визуализированный вывод по умолчанию кэшируется. Ключ кеширования определяется объектом и контекстом, передаваемым методу render().

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

Вот пример для Flex-типа «Контакты»:

<div class="entry-details">
+    {% if object.website %}
+        <a href="{{ object.website|e }}"><span class="name">{{ object.last_name|e }}, {{ object.first_name|e }}</span></a>
+    {% else %}
+        <span class="name">{{ object.last_name|e }}, {{ object.first_name|e }}</span>
+    {% endif %}
+    {% if object.email %}
+        <p><a href="mailto:{{ object.email|e }}" class="email">{{ object.email|e }}</a></p>
+    {% endif %}
+</div>
+<div class="entry-extra">
+    {% for tag in object.tags %}
+        <span>{{ tag|e }}</span>
+    {% endfor %}
+</div>
+

Если визуализированный HTML-код имеет динамическое содержимое, кэш визуализации можно отключить в шаблоне Twig с помощью {% do block.disableCache() %}.

Пользовательские макеты⚓︎

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

Вы можете создавать свои собственные макеты, просто добавляя новый файл рядом с default.html.twig. Базовое имя файла совпадает с именем вашего макета.

В макетах коллекций рекомендуется вызывать {% render object layout: 'xxx' %} вместо вывода переменных объекта непосредственно в шаблон коллекции.

\ No newline at end of file diff --git a/advanced/flex/using/object/index.html b/advanced/flex/using/object/index.html new file mode 100644 index 00000000..70f7022a --- /dev/null +++ b/advanced/flex/using/object/index.html @@ -0,0 +1,6 @@ + Объект Flex - Документация Grav CMS на русском
Перейти к содержанию

Объект Flex⚓︎

Рендеринг объекта⚓︎

render()⚓︎

render( [layout], [context] ): Block Визуализировать объект.

Параметры:

  • layout Название макета (string)
  • context Дополнительные переменные, которые можно использовать внутри файла шаблона Twig (array)

Возвращает:

  • Block (object) Класс HtmlBlock, содержащий выходные данные

В twig есть тег {% render %} , который следует использовать вместо прямого вызова метода. Это позволит JS/CSS активам объекта работать должным образом.

{% set contact = grav.get('flex').object('gizwsvkyo5xtms2s', 'contacts') %}
+
+{% render contact layout: 'details' with { my_variable: true } %}
+

```php <?php

use Grav\Common\Grav; use Grav\Framework\ContentBlock\HtmlBlock; use Grav\Framework\Flex\Interfaces\FlexObjectInterface;

/* @var FlexObjectInterface|null $collection / $object = Grav::instance()->get('flex')->getObject('gizwsvkyo5xtms2s', 'contacts'); if ($object) {

/** @var HtmlBlock $block */
+$block = $object->render('details', ['my_variable' => true]);
+

}

```

Другие методы⚓︎

getKey()⚓︎

getKey(): string Получить ключ объекта.

Возвращает:

  • string Ключ объекта

hasKey()⚓︎

hasKey(): bool Возвращает true, если ключ объекта был установлен.

Возвращает:

  • true если у объекта есть ключ, false в противном случае

getFlexType()⚓︎

getFlexType(): string Получить тип объекта.

Возвращает:

  • string Имя каталога Flex, в который входит объект

hasProperty()⚓︎

hasProperty( property ): bool Возвращает true, если свойство объекта было определено и имеет значение (не null).

Параметры:

  • property Имя свойства (string)

Возвращает:

  • true если свойство имеет значение, false в противном случае.

getProperty()⚓︎

getProperty( property, default ): mixed Возвращает значение свойства объекта.

Параметры:

  • property Имя свойства (string)

Возвращает:

  • mixed Значение свойства
  • null если свойство не определено или не имеет значения

setProperty()⚓︎

setProperty( property, value ): Object Установить новое значение для свойства объекта.

Параметры:

  • property Имя свойства (string)
  • value Новое значение (mixed)

Возвращает:

  • Object (object) Объект для связывания вызовов методов

Этот метод изменяет экземпляр объекта, совместно используемый всеми коллекциями. Если это не предусмотрено, «клонируйте» (clone) объект перед использованием этого метода.

defProperty()⚓︎

defProperty( property, default ): Object Задать значение по умолчанию для свойства объекта.

Параметры:

  • property Имя свойства (string)
  • default Значение по умолчанию (mixed)

Возвращает:

  • Object (object) Объект для связывания вызовов методов

Этот метод изменяет экземпляр объекта, совместно используемый всеми коллекциями. Если это не предусмотрено, «клонируйте» (clone) объект перед использованием этого метода.

unsetProperty()⚓︎

unsetProperty( property ): Object Удалить значение свойства объекта.

Параметры:

  • property Имя свойства (string)

Возвращает:

  • Object (object) Объект для связывания вызовов методов

Этот метод изменяет экземпляр объекта, совместно используемый всеми коллекциями. Если это не предусмотрено, «клонируйте» (clone) объект перед использованием этого метода.

isAuthorized()⚓︎

isAuthorized( action, [scope], [user] ): bool | null Проверить, авторизован ли пользователь для действия.

Параметры:

  • action (string)
  • Одно из списка: create, read, update, delete, list
  • scope Не обязательно (string)
  • Обычно либо admin, либо site
  • user Не обязательный объект пользователя (object)

Возвращает:

  • true Разрешить действие
  • false Запретить действие
  • null Не установлен (действует как Запретить)

Есть два значения deny: denied (false), not set (null). Это позволяет объединить несколько правил в цепочку, если предыдущие правила не совпали.

getFlexDirectory()⚓︎

getFlexDirectory(): Directory

Возвращает:

getTimestamp()⚓︎

getTimestamp(): int Получить метку времени последнего изменения для объекта.

Возвращает:

  • int Метка времени (в UNIX-формате).

search(string, [properties], [options] ): float Поиск строки из объекта, возвращает вес от 0 до 1.

Параметры:

  • string Строка для поиска (string)
  • properties Свойства для поиска, если значение равно null (или не указано), используйте значения по умолчанию (array или null)
  • options Дополнительные параметры, используемые при поиске (array)
    • starts_with: bool
    • ends_with: bool
    • contains: bool
    • case_sensitive: bool

Возвращает:

  • float Вес поиска от 0 до 1, используется для упорядочивания результатов.
  • 0 Объект не соответствует поиску

Если вы переопределите эту функцию, убедитесь, что вы возвращаете значение в диапазоне 0...1!

getFlexKey()⚓︎

getFlexKey(): string Получить уникальный ключ для объекта.

Возвращает:

  • string Ключ Flex объекта

Ключи Flex можно использовать, не зная, к какому каталогу принадлежит объект.

getStorageKey()⚓︎

getStorageKey(): string Получить уникальный ключ хранилища (в каталоге), который используется для определения имени файла или идентификатора базы данных.

Возвращает:

  • string Ключ хранилища объекта

exists()⚓︎

exists(): bool Возвращает истину, если объект существует в хранилище.

Возвращает:

  • true Объект существует в хранилище
  • false Объект не был сохранен

update()⚓︎

update( data, files ): Object Обновляет объект в памяти.

Параметры:

  • data (array) Вложенные массивы свойств с их значениями
  • files (array) Массив объектов Psr\Http\Message\UploadedFileInterface

Возвращает:

  • Object (object) Объект для связывания вызовов методов

После вызова этого метода необходимо сохранить объект.

create()⚓︎

create( [key] ): Object Создать новый объект в хранилище.

Параметры:

  • key (string) Дополнительный ключ

Возвращает:

  • Object (object) Сохраненный объект

createCopy()⚓︎

createCopy( [key] ): Object Создать новый объект из текущего и сохранить его в хранилище.

Параметры:

  • key (string) Дополнительный ключ

Возвращает:

  • Object (object) Сохраненный объект

save()⚓︎

save(): Object Сохранить объект в хранилище.

Возвращает:

  • Object (object) Сохраненный объект

delete()⚓︎

delete(): Object Удалить объект из хранилища.

Возвращает:

  • Object (object) Удаленный объект

getBlueprint()⚓︎

getBlueprint( [name] ): Blueprint Возвращает чертеж объекта.

Параметры:

  • name (string) Необязательное имя для чертежа

Возвращает:

  • Blueprint (object)

getForm()⚓︎

getForm( [name], [options] ): Form Возвращает экземпляр формы для объекта.

Параметры:

  • name (string) Необязательное имя для формы
  • options (array) Необязательные параметры формы

Возвращает:

  • Form (object)

getDefaultValue()⚓︎

getDefaultValue( name, [separator] ): mixed Возвращает значение по умолчанию, подходящее для использования в форме для данного свойства.

Параметры:

  • name (string) Имя свойства
  • separator (string) Необязательный символ-разделитель для вложенных свойств, по умолчанию . (точка)

Возвращает:

  • mixed Значение свойства по умолчанию

getDefaultValues()⚓︎

getDefaultValues(): array Возвращает значения по умолчанию, подходящие для использования в форме для данного свойства.

Возвращает:

  • array Все значения по умолчанию

getFormValue()⚓︎

getFormValue( name, [default], [separator] ): mixed Возвращает необработанное значение, подходящее для использования в форме для данного свойства.

Параметры:

  • name (string) Имя свойства
  • default (mixed) Необязательное значение поля по умолчанию, null если не задано
  • separator (string) Необязательный символ-разделитель для вложенных свойств, по умолчанию . (точка)

Возвращает:

  • mixed Значение поля формы

triggerEvent()⚓︎

triggerEvent( name, [Event] ): Object Запустить событие по вашему выбору.

Параметры:

  • name (string) Название события
  • Event (object) Необязательный класс события

Возвращает:

  • Object (object) Объект для связывания вызовов методов
\ No newline at end of file diff --git a/advanced/grav-development/grav-15-upgrade-guide/index.html b/advanced/grav-development/grav-15-upgrade-guide/index.html new file mode 100644 index 00000000..296a0294 --- /dev/null +++ b/advanced/grav-development/grav-15-upgrade-guide/index.html @@ -0,0 +1,20 @@ + Руководство по обновлению Grav с версии меньше 1.6 - Документация Grav CMS на русском
Перейти к содержанию

Руководство по обновлению Grav с версии меньше 1.6⚓︎

Это руководство было протестировано для Grav v1.2.0 и всех более поздних версий.

Обновление Grav непосредственно до последней версии работает, но не полностью поддерживается и, скорее всего, приведет к поломке вашего сайта!

Подготовка⚓︎

Самый простой способ обновить старые версии Grav — создать копию вашего сайта на сервере Linux/Unix, который поддерживает PHP 7.3 и SSH для доступа к командам CLI. Это руководство также работает с подсистемой Linux для Windows 10, но если она не установлена, вам, возможно, придется загрузить и переименовать пакеты обновлений вручную.

PHP 7.3 был выбран потому, что это единственная версия PHP, которая может использоваться для всех версий Grav. Вы также можете использовать PHP 7.1 или 7.2, но это позволит вам обновить Grav только до версии 1.6.31. На этом этапе вам нужно будет переключиться на PHP 7.3 или 7.4, прежде чем продолжить процесс обновления. PHP 8 следует использовать только после обновления до Grav 1.7 или более поздней версии.

Это руководство включает инструкции по обновлению Grav и наиболее часто используемые плагины: Problems, Error, Form, Email, Login и Admin. Для всех остальных плагинов убедитесь, что они все еще поддерживаются и поддерживают как Grav 1.6, так и последнюю версию Grav. На момент написания этого руководства почти все активно поддерживаемые плагины должны входить в эту категорию. Самые безопасные плагины — это те, которые были обновлены после выпуска Grav 1.7.0 (18.01.2021) или были подтверждены для работы в Grav 1.7.

Ваша тема и любые настраиваемые или неподдерживаемые плагины потребуют дополнительной работы. Любой пользовательский код следует проверить, чтобы убедиться, что он по-прежнему работает с текущими версиями Grav и PHP. То же самое верно и для файлов Markdown, YAML и Twig, поскольку в последних версиях библиотек есть исправления, которые выявляют ошибки, что обычно означает, что анализ поврежденных файлов завершится неудачно. Новые версии Grav предоставляют инструменты для проверки этих файлов, но проверки не выявляют всех проблем, поэтому также необходимо некоторое тестирование.

Контрольный список (с помощью консоли и Grav CLI):

  • Сделать резервную копию
  • Выяснить версию Grav командой bin/gpm version grav
  • Проверить версию PHP CLI командой php -v, версия должна быть не ниже PHP 7.3.6
  • Проверьте версию PHP-сервера, она должна быть такой же, как и версия PHP CLI
  • Перечислить все установленные плагины и распределить их по категориям (поддерживаемые, настраиваемые, неподдерживаемые)
  • Сделать то же самое со своими темами

Переход к Grav 1.6.31⚓︎

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

Выполните следующие команды в корневой папке вашего сайта Grav (опустите параметр -y в команде GPM, если вы используете Grav 1.2 или ниже):

wget -q https://getgrav.org/download/core/grav-update/1.6.31 -O tmp/grav-update-v1.6.31.zip
+
+bin/gpm direct-install -y tmp/grav-update-v1.6.31.zip
+

Grav также можно обновить вручную. Удалите следующие папки: assets bin system vendor webserver-configs и скопируйте/перезапишите все файлы из zip-файла обновления Grav. Обратите внимание, что файлы в zip-файле находятся внутри директории grav-update.

Далее нам нужно обновить базовые плагины.

wget -q https://getgrav.org/download/plugins/problems/2.0.3 -O tmp/grav-plugin-problems-v2.0.3.zip
+wget -q https://getgrav.org/download/plugins/error/1.7.1 -O tmp/grav-plugin-error-v1.7.1.zip
+wget -q https://getgrav.org/download/plugins/form/4.3.0 -O tmp/grav-plugin-form-v4.3.0.zip
+wget -q https://getgrav.org/download/plugins/email/3.1.0 -O tmp/grav-plugin-email-v3.1.0.zip
+wget -q https://getgrav.org/download/plugins/login/3.3.8 -O tmp/grav-plugin-login-v3.3.8.zip
+wget -q https://getgrav.org/download/plugins/admin/1.9.19 -O tmp/grav-plugin-admin-v1.9.19.zip
+
+
+bin/gpm direct-install -y tmp/grav-plugin-problems-v2.0.3.zip
+bin/gpm direct-install -y tmp/grav-plugin-error-v1.7.1.zip
+bin/gpm direct-install -y tmp/grav-plugin-form-v4.3.0.zip
+bin/gpm direct-install -y tmp/grav-plugin-email-v3.1.0.zip
+bin/gpm direct-install -y tmp/grav-plugin-login-v3.3.8.zip
+bin/gpm direct-install -y tmp/grav-plugin-admin-v1.9.19.zip
+

В качестве альтернативы плагины можно установить вручную, просто удалив все файлы в директории user/plugins/pluginnname и скопировав туда обновленные файлы из архива. Обратите внимание, что файлы в zip-файле находятся внутри папки с полуслучайным именем (требующим переименования).

Обновление до Grav 1.7⚓︎

Выполните следующие команды CLI одну за другой и следуйте их инструкциям:

bin/gpm self-upgrade
+bin/gpm update
+

Вы также можете обновить другие плагины один за другим до последней версии, но, пожалуйста, делайте это только в том случае, если последняя версия плагина поддерживает Grav 1.6. Остальные плагины должны быть отключены, если вы не уверены, что они будут работать. Они могут быть повторно включены позже, когда вы будете тестировать сайт.

Если у вас нет сломанных плагинов, то панель администрирования и сайт должны быть полностью работоспособны на данный момент.

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

\ No newline at end of file diff --git a/advanced/grav-development/grav-16-upgrade-guide/deprecated-tab.png b/advanced/grav-development/grav-16-upgrade-guide/deprecated-tab.png new file mode 100644 index 00000000..dd3b8afc Binary files /dev/null and b/advanced/grav-development/grav-16-upgrade-guide/deprecated-tab.png differ diff --git a/advanced/grav-development/grav-16-upgrade-guide/index.html b/advanced/grav-development/grav-16-upgrade-guide/index.html new file mode 100644 index 00000000..d60142d8 --- /dev/null +++ b/advanced/grav-development/grav-16-upgrade-guide/index.html @@ -0,0 +1,13 @@ + Руководство по обновлению до Grav 1.6 - Документация Grav CMS на русском
Перейти к содержанию

Руководство по обновлению до Grav 1.6⚓︎

Grav 1.6 - самое крупное обновление с момента первого выпуска Grav. Оно вводит несколько новых функций, улучшений, исправлений ошибок и предоставляет множество архитектурных изменений, которые прокладывают путь к Grav 2.0.

Для большинства людей переход на Grav 1.6 должен быть простым обновлением без каких-либо проблем. Но, как и при любом другом обновлении, рекомендуется сделать резервную копию сайта и протестировать обновление в тестовой среде перед обновлением действующего сайта.

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

Для получения дополнительной информации о том, как включить эту функцию, см. раздел Отладка и ведение журнала в документации.

Вкладка Deprecated на панели отладки⚓︎

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

Вкладка Deprecated

Эта вкладка Deprecated отображается, только если на странице обнаружены устаревшие вызовы.

Чтобы убедиться, что вы поймали все проблемы, вам следует либо очистить кэш, либо запустить Grav с отключенным кэшированием, чтобы максимизировать вероятность обнаружения всех ошибок. Даже выполнив эти шаги, вы можете заметить, что некоторые ошибки YAML/Twig появляются только после очистки кэша.

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

Когда вы открываете сообщение об устаревании, содержание может сначала показаться ошеломляющим. Но в большинстве случаев вы можете игнорировать большую часть содержимого и просто прочитать несколько первых строк: сообщение, файл и строку (если они есть).

Есть несколько типов проблем с устареванием:

  • yaml: файл YAML или Markdown использует устаревший синтаксис YAML.
  • twig: файл Twig содержит устаревший синтаксис Twig или возникла другая проблема, связанная с Twig.
  • grav: что-то вызывает устаревший метод Grav или использует устаревшее свойство.
  • vendor: что-то использует устаревший код сторонней библиотеки.
  • unknown: неизвестное устаревшее сообщение.

Парсинг YAML⚓︎

В Grav 1.6 YAML имеет более строгий синтаксический анализ с запасным вариантом для обратной совместимости.

Grav 1.6 использует синтаксический анализатор YAML Symfony 4.2, который следует стандартной спецификации YAML гораздо точнее, чем предыдущий парсер из Symfony 3.4. Это означает, что файлы YAML, которые раньше работали нормально, могут вызывать ошибки, связанные с недопустимым YAML. Однако, если файл не загружается с помощью новой версии парсера 4.2, Grav по умолчанию все равно будет использовать более старую версию парсера 3.4, чтобы ваш сайт продолжал работать. Однако это снизит производительность сайта, и вам следует выявить и исправить проблемы, чтобы обеспечить оптимальную производительность.

Этот резервный механизм обратной совместимости будет удален в Grav 2.0.

Grav 1.6.7 и все более поздние версии имеют новую команду CLI для обнаружения проблем синтаксического анализа YAML, пожалуйста, запустите bin/grav yamllinter, чтобы найти и исправить любые ошибки синтаксического анализа YAML на вашем сайте. Эту команду рекомендуется запускать сразу после обновления до Grav 1.6 или более поздней версии.

Admin 1.9.3 и все более поздние версии имеют YAML Linter, интегрированный в Сервис > Отчёты, если вы предпочитаете использовать его вместо команды CLI.

Посмотрите на эти ошибки YAML:⚓︎

  • Не используйте @, \``,|,%и>в начале строки без кавычек: используйтеdata-options@: []вместо@data-options: []`.
  • Всегда добавляйте пробелы после двоеточия : для ключей: используйте key: value вместо key:value.
  • Оборачивайте в кавычки null, true, false, 2.0 в ключах; ключи могут быть либо целыми числами, либо строками.
  • Также оборачивайте в кавычки null, true, false, 2 и 2.0 в значениях, если они должны быть строками.
  • При окружении строк двойными кавычками теперь необходимо экранировать символы \.

Панель отладки может использоваться для обнаружения любого устаревшего YAML. Просто откройте панель отладки и посмотрите вкладку Deprecated. Если вкладку не удается найти, значит, проблем не обнаружено.

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

Ошибки YAML требуют, чтобы вы очистили кэш, ошибки будут обнаружены только при декодировании файлов YAML.

Режим совместимости YAML⚓︎

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

Вы можете изменить этот параметр в user/config/system.yaml:

strict_mode:
+  yaml_compat: false
+

Мы рекомендуем пока не изменять эту настройку на существующих сайтах, а лучше создать тестовые сайты с режимом совместимости false. Также любой новый сайт, созданный с помощью Grav 1.6 или более поздней версии, должен иметь отключенный режим совместимости во время разработки, поскольку он позволяет вам сэкономить много времени, когда пришло время перейти на Grav 2.0.

Twig⚓︎

Отложенные блоки⚓︎

Вам следует обновить свою тему до версии, в которой добавлена ​​поддержка отложенных блоков ресурсов, чтобы обеспечить полную поддержку Grav 1.6. В качестве альтернативы, если у вас есть настраиваемая измененная тема или вы разработали свою собственную, вам следует обновить её самостоятельно, чтобы убедиться, что она продолжает работать с новыми функциями и более поздними версиями Grav и его плагинов, следуя руководству в Важные обновления темы сообщение в блоге.

Устаревший Twig⚓︎

Grav 2.0 будет использовать Twig 2 вместо Twig 1, который в настоящее время используется в выпусках Grav 1.x. Есть несколько устаревших функций, которые были удалены в Twig 2, поэтому вы должны убедиться, что вы выявили и исправили все эти проблемы, прежде чем обновляться до Grav 2.0 в будущем.

Панель отладки можно использовать для обнаружения любых устаревших проблем с Twig. Просто откройте панель отладки и перейдите на вкладку Deprecated.

Посмотрите на эти ошибки Twig:⚓︎
  • Макросы, импортированные в файл, больше не будут доступны в дочерних шаблонах (например, с помощью вызова include). Вам необходимо явно импортировать макросы в каждый файл, в котором вы их используете.
  • Фильтр |replace () будет работать только со связанным массивом в качестве параметра: { "I like this and that."|replace({'this': 'foo', 'that': 'bar'}) }}.
  • Тест sameas() теперь следует записать как same as().

Дополнительная информация о том, что является устаревшим можно найти здесь.

Автоэкранирование⚓︎

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

Например, у вас может быть такой шаблон Twig:

{% set my_string = '<script>echo("hello there!");<script>' %}
+<p>
+    {{ my_string }}
+</p>
+

По умолчанию в Grav отключено автоматическое экранирование Twig для простоты и ясности шаблонов, но, к сожалению, это было плохое решение, потому что никто, включая нас, не забывает всегда экранировать переменные, которые либо могут содержать специальные символы, либо исходят из ненадежный источник. Что ещё хуже, обычно неизвестно, является ли переменная HTML-безопасной или нет. Чтобы убедиться, что сайт защищен от большинства уязвимостей XSS, вы должны включить автоматическое экранирование в своей конфигурации. К сожалению, темы и плагины, использующие шаблоны Twig, обычно не работают с включенной настройкой, а шаблоны, написанные без явного экранирования, скорее всего, уязвимы для вредоносного контента.

В приведенном выше примере, поскольку автоматическое экранирование отключено, вывод будет отображаться как чистый HTML, и появится всплывающее окно с предупреждением «привет, там!». Однако этого следует избегать с помощью escape-фильтра Twig |e (или |e ('html'):

{% set my_string = '<script>echo("hello there!");<script>' %}
+<p>
+    {{ my_string|e }}
+</p>
+

Поскольку большинство людей склонны забывать экранировать переменные в Twig, и поскольку использование |e повсюду может затруднить чтение файлов шаблонов, в user/config/system.yaml есть новый параметр:

strict_mode:
+  twig_compat: false
+

Этот параметр принудительно включает «автоматическое экранирование» во всех файлах шаблонов Twig и отключает старую настройку для его включения и выключения. Побочным эффектом этой настройки является то, что ваш сайт, скорее всего, будет содержать несколько экранированных фрагментов контента, которые вам нужно будет исправить, используя фильтр |raw для всего контента, который должен содержать только HTML и HTML. Многие шаблоны и плагины ещё не были обновлены для работы с принудительным экранированием, поэтому, пожалуйста, сообщайте о любых ошибках в них, чтобы их можно было своевременно исправить.

Переход к использованию автоматического экранирования будет непростым. Во время перехода все файлы шаблонов должны содержать фильтры |e и |raw для каждой переменной, чтобы убедиться, что файл шаблона безопасен для использования в обоих режимах, или вы можете заключить весь код шаблона в теги {% autoescape %} Twig.

См. Руководство по Twig для получения дополнительной информации.

\ No newline at end of file diff --git a/advanced/grav-development/grav-17-upgrade-guide/disable-flex-pages.png b/advanced/grav-development/grav-17-upgrade-guide/disable-flex-pages.png new file mode 100644 index 00000000..3788eed7 Binary files /dev/null and b/advanced/grav-development/grav-17-upgrade-guide/disable-flex-pages.png differ diff --git a/advanced/grav-development/grav-17-upgrade-guide/fix-translations.png b/advanced/grav-development/grav-17-upgrade-guide/fix-translations.png new file mode 100644 index 00000000..f6881c80 Binary files /dev/null and b/advanced/grav-development/grav-17-upgrade-guide/fix-translations.png differ diff --git a/advanced/grav-development/grav-17-upgrade-guide/index.html b/advanced/grav-development/grav-17-upgrade-guide/index.html new file mode 100644 index 00000000..35999a6e --- /dev/null +++ b/advanced/grav-development/grav-17-upgrade-guide/index.html @@ -0,0 +1,106 @@ + Руководство по обновлению до Grav 1.7 - Документация Grav CMS на русском
Перейти к содержанию

Руководство по обновлению до Grav 1.7⚓︎

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

  • Flex-объекты: Новый способ создания собственных типов данных.
  • Сервер Symfony: Запуск Grav без установки веб-сервера.
  • Улучшена поддержка нескольких языков: Админка получила улучшение поддержки нескольких языков.
  • Улучшена поддержка нескольких сайтов: Админка получила улучшение поддержки нескольких сайтов.
  • Улучшена ACL админки: Полная поддержка CRUD для пользователей и страниц.
  • Улучшена поддержка медиа: Поддежка формата изображений webp, ленивая загрузка и многое другое.
  • Улучшено кэширование: Новый тег {% cache %} и улучшение производительности, особенно в админке.
  • Обнаружение XSS в формах: Формы не будут отправлены, если в них обнаружен потенциальный XSS. См. документацию о том, как отключить проверки.
  • Лучшие инструменты отладки: интеграция Clockwork, профилирование Twig и поддержка Tideways XHProf — расширения для профилирования PHP.

Для большинства людей Grav 1.7 должно быть простым обновлением без каких-либо проблем, но, как и любое обновление, рекомендуется сделать резервную копию вашего сайта и протестировать обновление в тестовой среде перед обновлением вашего действующего сайта.

Наиболее частые проблемы⚓︎

  1. HTML отображается на вашем сайте как код, а не как HTML, как предполагалось.⚓︎

    Такое поведение является результатом нового значения по умолчанию auto-escaping, которое истинно в Grav 1.7. Это усиление безопасности, и если вы обновляетесь с версии до 1.7, мы автоматически включаем параметр Совместимость с Twig в конфигурации системы, чтобы ваш старый код Twig продолжал работать. Если вы вручную обновляете сайт до 1.7 или обновляете каким-либо способом, который не проходит через процесс самостоятельного обновления GPM, вам следует установить этот параметр самостоятельно.

    Ознакомьтесь с секцией Twig этого руководства для получения полной информации...

  2. Получение ошибок о недопустимом YAML.⚓︎

    Поскольку мы обновились до более новой версии фреймворка Symfony, синтаксический анализатор YAML стал строже, чем в версиях до 1.7.Чтобы справиться с этим, мы включили старую версию парсера, которая доступна при включении параметра Совместимость с Yaml. Это выполняется автоматически, если вы обновляетесь до Grav 1.7 через GPM, но если вы выполняли обновление вручную, вам нужно будет установить это значение самостоятельно.

    Ознакомьтесь с секцией YAML этого руководства для получения полной информации...

  3. Админка отображается с непереведенными строками⚓︎

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

Обратитесь к секции Устранение возникших проблем на этой странице.

  1. Ошибки при сохранении или неработающие плагины админки.⚓︎

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

Чтобы должным образом решить эту проблему, пользовательские плагины должны быть обновлены для поддержки страниц Grav и страниц Flex с использованием PageInterface, а также должны быть явными Pages при необходимости.

Ознакомьтесь с секцией Страницы и секцией Админка этого руководства для получения полной информации...

Также были обнаружены некоторые специфические проблемы с плагинами. Обратитесь к секции Устранение возникших проблем на этой странице.

  1. Чертежи страниц перестают работать или выдают ошибку о цикле⚓︎

    Grav 1.7.8 добавляет поддержку для определения любого чертежа в вашей теме. Это означает, что если у вас есть чертежи страниц в папке blueprints/pages/, то используются стандартные расположения чертежей, как и в плагинах. К сожалению, некоторые старые темы могут иметь смесь файлов в blueprints/ и blueprints/pages, что нарушает определение и приводит либо к отсутствию полей в админке при редактировании страниц, либо к фатальной ошибке: Loop detected while extending blueprint file.

При возникновении любой из этих ошибок обратитесь к секции Устранение возникших проблем.

Руководство по быстрому обновлению⚓︎

Grav 1.7 требует PHP 7.3.6 или выше. Рекомендуемая версия — PHP 7.4.

YAML⚓︎

Парсер Grav 1.7 YAML более строг, и ваш сайт может сломаться, если у вас есть синтаксические ошибки в ваших файлах конфигурации или заголовках страниц. Однако, если вы обновляете свой существующий сайт с помощью bin/gpm или плагина админки, процесс обновления сохраняет большую часть сломанного синтаксиса YAML.

Чтобы вернуться к старому поведению, вам необходимо убедиться, что у вас есть следующие настройки в user/config/system.yaml:

strict_mode:
+  yaml_compat: true
+

или в админке в разделе НастройкаДополнительно -> Совместимость с YAML

Совместимость с Yaml

Руководство по обновлению Grav 1.6 имеет специальную секцию Парсинг YAML, чтобы помочь вам решить эти проблемы.

По умолчанию Grav 1.7 использует синтаксический анализатор YAML Symfony 4.4, который более точно соответствует стандартной спецификации YAML, чем более старые версии Grav. Это означает, что файлы YAML, которые раньше работали нормально, могут вызывать ошибки, связанные с недопустимым YAML. Тем не менее, Grav по умолчанию все равно будет использовать более старую версию парсера 3.4, чтобы ваш сайт продолжал работать.

Вам нужно запустить команду CLI bin/grav yamllinter или перейти в раздел Админка > Сервис > Отчёты до и после обновления и исправления всех предупреждений и ошибок, связанных с YAML.

Twig⚓︎

Grav 1.7 по умолчанию включает автоэкранирование Twig. Однако, если вы обновляете существующий сайт с помощью bin/gpm или плагина админки, процесс обновления сохраняет существующие настройки автоматического выхода.

Чтобы вернуться к старому поведению, вам необходимо убедиться, что у вас есть следующие настройки в user/config/system.yaml:

twig:
+  autoescape: false
+strict_mode:
+  twig_compat: true
+

или в админке в разделе НастройкаДополнительно -> Совместимость с TWIG

И, пожалуйста, не забудьте очистить кэш после этого!

Совместимость с Twig

Руководство по обновлению Grav 1.6 имеет специальную секцию Twig. Обязательно с ней ознакомьтесь!

Шаблонизатор Twig обновлен до версии 1.43, но также поддерживает Twig 2.13. Чтобы поддерживать эту новую версию Twig, вам необходимо обновить любой старый синтаксис в ваших шаблонах Twig. Руководство по обновлению Grav 1.6 поможет вам в этом.

Дополнительные изменения в шаблонах:

  • Добавлен новый тег Twig {% cache %}, устраняющий необходимость в расширении twigcache.
  • Добавлена Twig-функция array_diff()
  • Добавлена Twig-функция template_from_string()
  • Добавлена Twig-функция svg_image() чтобы упростить включение исходного кода SVG в Twig
  • Улучшена Twig-функция url(), принимающая третий параметр (true) чтобы вернуться URL-адрес несуществующего файла, вместо того, чтобы возвращать false
  • Улучшен Twig-фильтр |array для работы с итераторами и объектами с методом toArray()
  • Улучшена Twig-функция authorize() чтобы лучше работать с вложенными параметрами правил
  • Улучшен Twig-фильтр |yaml_serialize: добавлена поддержка объектов JsonSerializable и других объектов, подобных массивам
  • Добавлены шаблоны по умолчанию для external.html.twig, default.html.twig и modular.html.twig
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ: Используйте {% script 'file.js' at 'bottom' %} вместо сломанного in 'bottom'

Формы⚓︎

Grav 1.7 изменяет поведение строгой проверки. Однако, если вы обновляете существующий сайт с помощью bin/gpm или плагина админки, процесс обновления сохраняет существующее поведение в строгом режиме.

Улучшения строгого режима: Внутри форм объявление validation: strict было не таким строгим, как мы надеялись, из-за ошибки. Строгий режим должен предотвращать отправку форм любых дополнительных полей, и это было исправлено в Grav 1.7. К сожалению, многие старые формы объявлены строгими, даже если в них есть дополнительные данные.

Чтобы вернуться к старому поведению, вам необходимо убедиться, что у вас есть следующие настройки вuser/config/system.yaml:

strict_mode:
+  blueprint_compat: true
+

Обнаружение инъекции XSS теперь по умолчанию включено во всех формах интерфейса. См. документацию о том, как отключить или настроить проверки для каждой формы и поля.

По этой причине мы добавили новую опцию конфигурации system.strict_mode.blueprint_compat: true для сохранения старого поведения validation: strict. Рекомендуется отключить этот параметр для повышения безопасности сайта, но перед этим выполните поиск по всем своим формам, если вы использовали функцию validation: strict. Если да, удалите строку или проверьте, работает ли форма.

Этот резервный механизм обратной совместимости будет удален в Grav 2.0.

Среды и мультисайты⚓︎

Grav 1.7 перемещает настройки окружения в папку user://env. Старое местоположение по-прежнему работает, но лучше переместить среду в одно местоположение, в будущем функции могут полагаться на него.

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

Кроме того, файл setup.php теперь может находиться либо в GRAV_ROOT/setup.php, либо в GRAV_ROOT/GRAV_USER_PATH/setup.php. Второе расположение упрощает использование сред с репозиториями git, содержащими только папку пользователя.

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

В админке теперь есть новое управление учётными записями, использующее Flex-пользователей:

Функция Flex-пользователей ещё не используется во внешнем интерфейсе вашего сайта.

Страницы⚓︎

Существующее администрирование страниц было значительно улучшено с Flex-страницами:

  • Переработанный список: гораздо лучшая поддержка больших сайтов.
  • Лучший контроль доступа: CRUD ACL поддержка владельцев страниц
  • Лучшая многоязычная поддержка

НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ

Мы исправили ошибку 404 страницы, когда вы переходите на не маршрутизируемую страницу с маршрутизируемыми, видимыми дочерними страницами под ней. Теперь вы перенаправляетесь на первую маршрутизируемую, видимую дочернюю страницу. Это, вероятно, то, что вы хотели в первую очередь.

Функция Flex-страниц ещё не используется во внешнем интерфейсе вашего сайта.

Мультиязычность⚓︎

Grav 1.7 изменил поведение того, как работают многоязычные резервные копии для страниц.

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

Новое поведение — возврат только к языку сайта по умолчанию. Это поведение по умолчанию можно изменить, установив резервные языки для каждого языка с помощью параметра конфигурации system.languages.content_fallback.

Если страница не существует ни на одном из резервных языков, вместо нее будет отображаться 404 Not Found.

НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ

Пожалуйста, добавьте правильные резервные языки для содержимого страницы в system.yaml или в админке: Настройка > Система > Языки > Резервный язык содержимого.

Медиа⚓︎

В Grav 1.7 значительно улучшена обработка мультимедиа. Некоторые основные моменты:

  • Поддержка формата изображений webp
  • Markdown: добавлена ​​поддержка собственных атрибутов loading=lazy для изображений. Может быть установлена в system.images.defaults или как параметр в Markdown: ?loading=lazy
  • Добавлена ​​возможность отключения обработки (noprocess) определённых элементов только в фрагментах ссылок/изображений, например http://foo.com/page?id=foo&target=_blank&noprocess=id

CLI⚓︎

Некоторые основные моменты:

  • Все команды интерфейса командной строки теперь принимают параметры --env и --lang, чтобы установить окружение и используемый язык соответственно (-e больше не работает).
  • Добавлена ​​новая команда CLI bin/grav server для легкого запуска встроенных веб-серверов Symfony или PHP.
  • Улучшенная проверка команды cron в Scheduler и более полезная информация из интерфейса командной строки.
  • Добавлен новый параметр -r <job-id> для команды CLI планировщика для принудительного запуска задания.
  • Улучшена команда CLI bin/grav yamllinter, добавлена ​​опция поиска проблем с линтингом YAML на всем сайте или в пользовательской папке.
  • Ошибки команд CLI/GPM теперь возвращают ненулевой код (что позволяет обнаруживать ошибки в случае сбоя команды).

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

Добавлен новый параметр конфигурации для сохранения языка по умолчанию в файлах .md, если он установлен в false: * system.yaml: languages.include_default_lang_file_extension: true|false * Админка: Настройка > Система > Языки > Include default language in file extension

Добавлен новый параметр конфигурации, позволяющий устанавливать резервные языки содержимого индивидуально для каждого языка: * system.yaml: languages.content_fallback: См. Конфигурацию языков * Админка: Настройка > Система > Языки > Content Language Fallback

Добавлена новая опция конфигурации для выбора между debugbar и clockwork * system.yaml: debugger.provider: clockwork|debugbar * Админка: Настройка > Система > Отладчик > Debugger Provider

Добавлена новая опция конфигурации для скрытия потенциально конфиденциальной информации * system.yaml: debugger.censored: false|true * Админка: Настройка > Система > Отладчик > Censor Sensitive Data

Добавлен новый параметр конфигурации для сохранения старого поведения validation: strict * system.yaml: strict_mode.blueprint_compat: true|false * Админка: Настройка > Система > Дополнительно > Blueprint Compatibility

Добавлена ​​поддержка конфигурации системы для заголовков HTTP_X_FORWARDED (хост отключен по умолчанию) * system.yaml: http_x_forwarded.protocol: true|false * Админка: Настройка > Система > Дополнительно > HTTP_X_FORWARDED_PROTO Enabled * system.yaml: http_x_forwarded.host: true|false * Админка: Настройка > Система > Дополнительно > HTTP_X_FORWARDED_HOST Enabled * system.yaml: http_x_forwarded.port: true|false * Админка: Настройка > Система > Дополнительно > HTTP_X_FORWARDED_PORT Enabled * system.yaml: http_x_forwarded.ip: true|false * Админка: Настройка > Система > Дополнительно > HTTP_X_FORWARDED IP Enabled

Добавлен новый параметр конфигурации security.sanitize_svg для удаления потенциально опасного кода из файлов SVG. * security.yaml: sanitize_svg: true|false * Admin: Configuration > Security > Sanitize SVG

РАЗРАБОТЧИКАМ⚓︎

Отладка⚓︎

  • Добавлена ​​поддержка для инструментов разработчика Clockwork (теперь отладчик по умолчанию)
  • Добавлена ​​поддержка для Tideways XHProf, расширения для профилирования PHP
  • Добавлено профилирование Twig для отладчика Clockwork.

Использование автозагрузчика композера⚓︎

  • Обновлен bin/composer.phar до 2.0.2, самой новой и быстрой
  • Пожалуйста, добавьте файл composer.json в свой плагин и запустите composer update --no-dev (и не забывайте обновлять его):

    composer.json
    {
    +    "name": "getgrav/grav-plugin-example",
    +    "type": "grav-plugin",
    +    "description": "Example plugin for Grav CMS",
    +    "keywords": ["example", "plugin"],
    +    "homepage": "https://github.com/getgrav/grav-plugin-example",
    +    "license": "MIT",
    +    "authors": [
    +        {
    +            "name": "...",
    +            "email": "...",
    +            "homepage": "...",
    +            "role": "Developer"
    +        }
    +    ],
    +    "support": {
    +        "issues": "https://github.com/getgrav/grav-plugin-example/issues",
    +        "docs": "https://github.com/getgrav/grav-plugin-example/blob/master/README.md"
    +    },
    +    "require": {
    +        "php": ">=7.1.3"
    +    },
    +    "autoload": {
    +        "psr-4": {
    +            "Grav\\Plugin\\Example\\": "classes/",
    +            "Grav\\Plugin\\Console\\": "cli/"
    +        },
    +        "classmap":  [
    +            "example.php"
    +        ]
    +    },
    +    "config": {
    +        "platform": {
    +            "php": "7.1.3"
    +        }
    +    }
    +}
    +

    См. Composer schema

  • Пожалуйста, используйте автозагрузку вместо require в коде:

    example.php
    <?php
    +
    +/**
    + * @return array
    + */
    +public static function getSubscribedEvents(): array
    +{
    +    return [
    +        'onPluginsInitialized' => [
    +            // This is only required in Grav 1.6. Grav 1.7 automatically calls $plugin->autolaod() method.
    +            ['autoload', 100000],
    +        ]
    +    ];
    +}
    +
    +/**
    + * Composer autoload.
    + *
    + * @return \Composer\Autoload\ClassLoader
    + */
    +public function autoload(): \Composer\Autoload\ClassLoader
    +{
    +    return require __DIR__ . '/vendor/autoload.php';
    +}
    +
  • Плагины и темы: $plugin->autoload() и $theme->autoload() вызываются автоматически при инициализации объекта

  • Убедитесь, что ваш код не использует require или include для загрузки классов

Чертежи плагинов/тем (blueprints.yaml)⚓︎

  • Пожалуйста, добавьте:
    slug: folder-name
    +type: plugin|theme
    +
  • Убедитесь, что вы обновили свои зависимости. Я рекомендую установить Grav либо на 1.6, либо на 1.7 и обновить ваш код/vendor до PHP 7.1

    dependencies:
    +    - { name: grav, version: '>=1.6.0' }
    +
  • Добавлены themes для кэшированных чертежей и конфигурации Grav 1.7.8 добавляет поддержку для определения любого чертежа в вашей теме. Переместите все файлы и папки из blueprints/ в blueprints/pages/, чтобы сохранить совместимость с вашей темой. Также не забудьте обновить минимальную зависимость Grav на >=1.7.8.

Сессии⚓︎

  • Идентификатор сеанса теперь изменяется при входе в систему, чтобы предотвратить проблемы с фиксацией сеанса
  • Добавлен метод Session::refreshrateId() для правильного предотвращения проблем с фиксацией сеанса

Контроль доступа⚓︎

  • user.authorize() теперь требует, чтобы пользователь был авторизован (прошел проверку 2FA), если правило не содержит login в своем имени.
  • Добавлена ​​поддержка более продвинутого ACL (CRUD)

  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ у user.authorize() и Flex object.isAuthorized() теперь есть два состояния отказа: false и null.

    Убедитесь, что у вас нет строгой проверки на ложность: $user->authorize($action) === false (PHP) или user.authorize(action) is same as(false) (Twig).

    Для отрицательных проверок вы должны использовать !user->authorize($action) (PHP) или not user.authorize(action) (Twig).

    Изменение было сделано, чтобы разрешить строгие правила отказа путем объединения действий, если предыдущие не совпадают: user.authorize(action1) ?? user.authorize(action2) ?? user.authorize(action3).

    Обратите внимание, что функция Twig authorize() по-прежнему сохраняет прежнее поведение!

Страницы⚓︎

  • Добавлены шаблоны по умолчанию для external.html.twig, default.html.twig и modular.html.twig
  • Админка использует Flex-страницы по умолчанию (можно отключить в плагине Flex-Objects)
  • Добавлена ​​поддержка разрешений администратора для конкретных страниц для Flex Pages
  • Добавлена ​​поддержка корневой страницы для Flex Pages

Отключаем страницы Flex

  • Исправлен неправильный вызов Pages::dispatch() вместо Pages::find()
  • Добавлен метод Pages::getCollection()
  • Перемещена логика collection() и evaluate() из класса Page в класс Pages

  • УСТАРЕЛО $page->modular() в пользу $page->isModule()

  • УСТАРЕЛО PageCollectionInterface::nonModular() в пользу PageCollectionInterface::pages()
  • УСТАРЕЛО PageCollectionInterface::modular() в пользу PageCollectionInterface::modules()

  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Исправлено возвращение null методами Page::modular() и Page::modularTwig() для папок и других неинициализированных страниц. Не должно влиять на ваш код, если вы не проверяли его на false или null.

  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Всегда используйте \Grav\Common\Page\Interfaces\PageInterface вместо \Grav\Common\Page\Page в сигнатурах методов
  • Админка теперь использует Flex-страницы по умолчанию, коллекция будет вести себя немного по-другому
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ $page->topParent() может возвращать саму страницу вместо null
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ $page->header() может возвращать объект \Grav\Common\Page\Header вместо stdClass, вам нужно обрабатывать оба (Flex против обычного)

Медиа⚓︎

  • Добавлен метод MediaTrait:: freeMedia() для свободных носителей (и памяти)
  • Добавлена поддержка загрузки и удаления изображений непосредственно в Media с помощью PSR-7
  • Скорректированные типы активов для расширения активов в классе
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Медиа больше не расширяются Getters, доступ через $media->$filename больше не работает, используйте $media[$filename]!

Markdown⚓︎

  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Обновлен Parsedown до 1.7 для Parsedown-Extra 0.8. Плагины, расширяющие Parsedown, могут нуждаться в исправлении для рендеринга в виде HTML
  • Добавлен новый метод Excerpts::processLinkHtml()

Пользователи⚓︎

  • Добавлена экспериментальная поддержка Flex-пользователей в интерфейсе (пока не рекомендуется использовать)
  • Админка использует Flex-пользователей по умолчанию (можно отключить в плагине Flex-Objects)
  • Улучшены Flex-пользователи: подчинение чертежам и разрешение использовать Flex только в админке
  • Улучшены Flex-пользователи: ACL пользователя и группы теперь поддерживает запрет разрешений
  • Метод UserInterface::authorize() при возврате null имеет то же значение, что и false, если доступ запрещен из-за отсутствия правила соответствия
  • УСТАРЕЛО \Grav\Common\User\Group в пользу $grav['user_groups'], который содержит коллекцию Flex UserGroup
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Всегда используйте \Grav\Common\User\Interfaces\UserInterface вместо \Grav\Common\User\User в сигнатурах методов

Flex⚓︎

  • Не используйте классы Flex Framework напрямую, лучше использовать или расширять классы под пространством имен Grav\Common\Flex\Types\Generic
  • Добавлен $grav['flex'] для доступа ко всем зарегистрированным каталогам Flex
  • Добавлено событие FlexRegisterEvent, который срабатывает при первом обращении к $grav['flex']
  • Добавлен метод hasFlexFeature() для проверки, реализует ли FlexObject или FlexCollection заданную функцию
  • Добавлен метод getFlexFeatures() для возврата всех функций, которые реализует FlexObject или FlexCollection
  • Добавлен метод FlexObject::refresh() для проверки, что объект обновлен
  • Добавлен метод FlexStorage::getMetaData() для получения обновленной метаинформации объекта для перечисленных ключей
  • Добавлен интерфейс FlexDirectoryInterface
  • Добавлен параметр поиска same_as для объектов Flex
  • Метод $page->header() объекта Flex Pages возвращает объект \Grav\Common\Page\Header, прежний класс Page по-прежнему возвращает stdClass
  • Переименован метод PageCollectionInterface::nonModular() в PageCollectionInterface::pages(), прежний метод объявлен устаревшим
  • Переименован метод PageCollectionInterface::modular() в PageCollectionInterface::modules(), прежний метод объявлен устаревшим
  • FlexDirectory::getObject() теперь можно вызывать без каких-либо параметров для создания нового объекта
  • Реализована настраиваемая конфигурация для каждого типа гибкого каталога
  • УСТАРЕЛИ FlexDirectory::update() и FlexDirectory::remove()
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Все классы типов Flex перемещены в пространство Grav\Common\Flex
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ FlexStorageInterface::getStoragePath() и getMediaPath() теперь могут возвращать null
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Объекты Flex больше не возвращают временный ключ, если у них его нет; вместо этого возвращается пустой ключ
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Добавлен аргумент перезагрузки в FlexStorageInterface::getMetaData()
  • Вы можете добавить файл edit_list.html.twig в поле формы, чтобы настроить внешний вид в представлении списка

Мультиязычность⚓︎

  • Улучшенная языковая поддержка для класса Route
  • Переводы: переименуйте MODULAR в MODULE везде
  • Добавлен метод Language::getPageExtensions(), чтобы получить полный список поддерживаемых расширений языка страниц
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Исправлен метод Language::getFallbackPageExtensions() для возврата к языку по умолчанию, вместо переключения на все языки

Мультисайт⚓︎

  • Добавлена ​​поддержка размещения всех сайтов/сред в папке user/env

Сериализация⚓︎

  • Все классы теперь используют сериализацию PHP 7.4. Старые методы Serializable теперь являются завершёнными (final) и не могут быть отменены.

Чертежи⚓︎

  • Добавлен фильтр flatten_array, чтобы формировать проверку поля
  • Добавлена поддержка security@: or: [admin.super, admin.pages] в чертежах (поддержка вложенного режима И/ИЛИ)
  • Проверка чертежей: добавлена validate: value_type: bool|int|float|string|trim в array для фильтрации всех значений внутри массива
  • Если в ваших плагинах есть папка с чертежами, инициализировать её в этом случае будет слишком поздно. Вместо этого сделайте это:

    <?php
    +class MyPlugin extends Plugin
    +{
    +    /** @var array */
    +    public $features = [
    +        'blueprints' => 0, // Use priority 0
    +    ];
    +}
    +

События⚓︎

  • Используйте Symfony EventDispatcher напрямую вместо обертки rockettheme/toolbox.
  • Добавлен метод $grav->dispatchEvent() для событий PSR-14
  • Добавлено событие PluginsLoadedEvent, которое срабатывает после того, как плагины были загружены, но ещё не инициализированы
  • Добавлено событие SessionStartEvent, которое срабатывает при запуске сеанса
  • Добавлено событие FlexRegisterEvent, которое срабатывает при первом доступе к $grav['flex']
  • Добавлено событие PermissionsRegisterEvent, которое срабатывает при первом доступе к $grav['permissions']
  • Добавлено событие onAfterCacheClear
  • Проверьте событие onAdminTwigTemplatePaths, так не должно быть:

    <?php
    +public function onAdminTwigTemplatePaths($event)
    +{
    +    // This code breaks all the other plugins in admin, including Flex Objects
    +    $event['paths'] = [__DIR__ . '/admin/themes/grav/templates'];
    +}
    +
    но:
    <?php
    +public function onAdminTwigTemplatePaths($event)
    +{
    +    // Add plugin template path for admin.
    +    $paths = $event['paths'];
    +    $paths[] = __DIR__ . '/admin/themes/grav/templates';
    +    $event['paths'] = $paths;
    +}
    +

JavaScript⚓︎

  • Обновлен пакет JQuery до последней версии 3.5.1

Разное⚓︎

  • Добавлен Utils::functionExists(): Совместимость с PHP 8 function_exists()
  • Добавлены хелперы Utils::isAssoc() и Utils::isNegative()
  • Добавлен метод Utils::simpleTemplate() для очень простого создания шаблонов переменных
  • Добавлен метод Utils::fullPath() для получения полного пути к файлу, потоку и т. д.
  • Поддержка настраиваемой замены нулевого символа в CSVFormatter::decode()
  • Добавлена функция Security::sanitizeSVG()
  • Добавлен метод $grav->close(), чтобы правильно завершать запрос ответом
  • Добавлен метод Folder::countChildren(), чтобы определить, есть ли в папке дочерние папки
  • Поддержка символических ссылок при сохранении File
  • Добавлен метод Route::getBase()
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Делаем объекты Route неизменными. Это означает, что вам нужно сделать: {% set route = route.withExtension('.html') %} (для всех методов withX) для хранения обновленных версий.
  • Лучшая обработка Content-Encoding в Apache, когда сжатие контента отключено
  • Добавлена функция Uri::getAllHeaders()
  • Разрешить передачу параметров JsonFormatter в виде строки

CLI⚓︎

  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Многие плагины инициализируют Grav неправильно, поэтому небезопасно инициализировать плагины и тему самостоятельно
    • Следующие вызовы требуют Grav 1.6.21 или более поздней версии, поэтому рекомендуется установить зависимость Grav для этой версии
    • Внутри метода `serve():
    • Вызывайте $this->setLanguage($langCode); прежде чем делать что-либо ещё, если вы хотите установить язык (или использовать по умолчанию)
    • Вызывайте один из следующих методов:
      • $this->initializeGrav(); Уже вызван, если до этого была введена команда bin/plugin
      • $this->initializePlugins(); Это инициализирует grav, плагины (до onPluginsInitialized)
      • $this->initializeThemes(); Это инициализирует grav, плагины и тему
      • $this->initializePages(); Это инициализирует grav, плагины, тему и все необходимое для страниц.
  • Рекомендуется добавлять к классам команд CLI префикс вашего плагина, иначе могут возникнуть конфликты имен (у нас уже есть!)

Используемые библиотеки⚓︎

  • Компоненты Symfony обновлены до версии 4.4, пожалуйста, обновите все устаревшие функции в своем коде.
  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ Пожалуйста, запустите bin/grav yamllinter, чтобы найти любые ошибки синтаксического анализа YAML на вашем сайте (включая ваши плагины и темы).

ПЛАГИНЫ⚓︎

Админка⚓︎

  • Добавлена опция редактор контента в проект учётной записи пользователя

  • НАРУШЕНИЕ ОБРАТНОЙ СОВМЕСТИМОСТИ админка больше не будет инициализировать frontend-страницы, это было сделано для того, чтобы значительно ускорить работу плагина админки.

    Пожалуйста, вызывайте $grav['admin']->enablePages() или {% do admin.enablePages() %} если вам нужно получить доступ к интерфейсным страницам. Этот вызов можно безопасно делать несколько раз.

    Если вы используете Flex-страницы, используйте каталог Flex вместо них, это сделает ваш код намного быстрее.

  • Админка теперь использует Flex для редактирования учетных записей и страниц. Если ваш плагин подключается к любому из них, пожалуйста, убедитесь, что они все ещё работают.

  • Кэширование админки включено по умолчанию, убедитесь, что ваш плагин очищает кэш при необходимости. Пожалуйста, избегайте очистки всего кэша!

Ядро шорткода⚓︎

  • УСТАРЕЛО Каждый шорткод должен иметь метод init(), классы без него в будущем перестанут работать.

Устранение возникших проблем⚓︎

ОШИБКА: Шаблон flex-objects.html.twig для страницы не найден⚓︎

Если вы получаете эту ошибку после обновления до Grav 1.7, это может быть связано с плагином content-edit. Если отключить этот плагин, ошибка должна исчезнуть сама собой. См. описание проблемы #3169

Непереведённая админка⚓︎

Если ваша админка выглядит так:

Непереведённая админка

Исправление очень простое и может быть сделано даже при неполном переводе. Просто перейдите к PLUGIN_ADMIN.CONFIGURATION, а потом в PLUGIN_ADMIN.LANGUAGES, измените параметр PLUGIN_ADMIN.LANGUAGE_TRANLATIONS на PLUGIN_ADMIN.YES:

Исправление переводов

Чертежи страниц перестают работать в админке⚓︎

Если вы не видите свои пользовательские поля при редактировании страницы, ваша тема использует два противоречивых места для чертежей страниц.

Если тема была создана не вами, пожалуйста, сообщите об ошибке автору темы.

Чтобы исправить ошибку, вам необходимо переместить все файлы и папки вашей темы из blueprints/ в blueprints/pages/ (требуется Grav 1.7.8+). В противном случае, если тема должна поддерживать более старые версии Grav, сделайте наоборот.

Ошибка: Loop detected while extending blueprint file⚓︎

Самым простым исправлением ошибки цикла является перемещение файлов в нужное место, см. вышеуказанный вопрос.

В качестве альтернативы вы можете исправить проблему, изменив чертеж неработающей страницы с этого блока:

extends@:
+    type: [NAME]
+    context: 'blueprints://pages'
+

где [NAME] — имя файла (без расширения) самого чертежа, на этот блок

extends@: self@
+

Отсутствуют стили CSS в админке⚓︎

Сообщалось, что после обновления до последней версии Grav 1.7 и Admin 1.10 некоторые страницы администратора выглядят сломанными и не полностью стилизованными. Это может быть связано с плагином imagecreate. Недостаточно отключить этот плагин, вы должны полностью удалить его, после чего ошибка должна исчезнуть сама собой. См. описание проблемы #2035

Возврат к последней версии Grav 1.6⚓︎

Хотя мы рекомендуем решить любые проблемы, которые могут возникнуть у вас, чтобы гарантировать, что Grav 1.7 и будущие обновления будут лёгким обновлением, будут сценарии, в которых у вас есть настраиваемые функции плагина или нет ресурсов разработчика под рукой, и вам просто нужно вернуться к Grav 1.6 быстро.

Если у вас есть доступ к сайту через интерфейс командной строки, это можно сделать, выполнив следующие команды из корня вашего сайта Grav 1.7:

wget -q https://getgrav.org/download/core/grav-update/1.6.31 -O tmp/grav-update-v1.6.31.zip
+wget -q https://getgrav.org/download/plugins/admin/1.9.19 -O tmp/grav-plugin-admin-v1.9.19.zip
+unzip tmp/grav-update-v1.6.31.zip -d tmp
+unzip tmp/grav-plugin-admin-v1.9.19.zip -d tmp
+cp -rf tmp/getgrav-grav-plugin-admin-5d86394/* user/plugins/admin/
+cp -rf tmp/grav-update/* ./
+

По сути, здесь выполняется прямая установка последней версии Grav 1.6 и Admin 1.9 поверх вашей текущей установки. Папку user/ это не затрагивает, поэтому ваш контент и плагины не пострадают.

Для тех, у кого нет доступа к CLI, скачайте файлы grav-update-v1.6.31.zip и grav-plugin-admin-1.9.19.zip. Разархивируйте файлы в свою файловую систему. Затем используйте свой любимый FTP/SFTP-клиент, чтобы скопировать все файлы Grav в ваш WEBROOT и файлы админки в WEBROOT/user/plugins/admin.

\ No newline at end of file diff --git a/advanced/grav-development/grav-17-upgrade-guide/twig-compat.png b/advanced/grav-development/grav-17-upgrade-guide/twig-compat.png new file mode 100644 index 00000000..242a3fbc Binary files /dev/null and b/advanced/grav-development/grav-17-upgrade-guide/twig-compat.png differ diff --git a/advanced/grav-development/grav-17-upgrade-guide/untranslated.png b/advanced/grav-development/grav-17-upgrade-guide/untranslated.png new file mode 100644 index 00000000..886477e7 Binary files /dev/null and b/advanced/grav-development/grav-17-upgrade-guide/untranslated.png differ diff --git a/advanced/grav-development/grav-17-upgrade-guide/yaml-compat.png b/advanced/grav-development/grav-17-upgrade-guide/yaml-compat.png new file mode 100644 index 00000000..baf98d46 Binary files /dev/null and b/advanced/grav-development/grav-17-upgrade-guide/yaml-compat.png differ diff --git a/advanced/grav-development/index.html b/advanced/grav-development/index.html new file mode 100644 index 00000000..68800535 --- /dev/null +++ b/advanced/grav-development/index.html @@ -0,0 +1,77 @@ + Разработка Grav - Документация Grav CMS на русском
Перейти к содержанию

Разработка Grav⚓︎

Если вы хотите разрабатывать с помощью Grav, вы получите более сложную настройку, чем та, которая требуется для обычного пользователя Grav. Это включает практически любой тип разработки, например: Grav Core, Grav Plugins, Grav Skeletons или даже Grav Themes.

Во-первых, давайте разберем различные типы развития:

Grav Core⚓︎

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

Grav намеренно сосредоточен на эффективной работе со страницами. Для управления страницами и расширенной функциональности часто лучше всего создать плагин. Мы настоятельно рекомендуем нашему сообществу вносить исправления и даже предлагать разработку соответствующих функций в ядре Grav.

Запуск тестов⚓︎

Сначала установите зависимости для разработки, запустив composer install из корня Grav.

composer install
+

Затем вы можете запустить тесты:

composer test
+

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

Вы также можете запустить один файл модульного теста, например

composer test tests/unit/Grav/Common/Markdown/ParsedownTest::testAttributeLinks
+

Альтернативный метод вызова этих тестов:

./vendor/bin/codecept run
+./vendor/bin/codecept run tests/unit/Grav/Common/Markdown/ParsedownTest::testAttributeLinks
+

Плагины Grav⚓︎

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

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

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

Требования плагинов⚓︎

Хороший плагин Grav требует определённых файлов для правильной работы, чтобы попасть в репозиторий Grav и отображаться в плагине админки. Убедитесь, что ваш плагин содержит все эти файлы:

  • yourplugin.php - PHP файл плагина, который должен называться так же, как и папка
  • yourplugin.yaml - файл конфигурации плагина, который содержит любые параметры и информацию о наследовании потоков
  • blueprints.yaml - файл определения плагина и файл определения формы
  • CHANGELOG.md - файл журнала изменений, который должен быть в правильном формате Grav для согласованного рендеринга
  • README.md - необходимый файл для объяснения и предварительного просмотра плагина
  • LICENSE - файл лицензии, возможно, MIT, если он соответствует ядру Grav
  • languages.yaml (необязательно) - файл определения языка

Каркасы Grav⚓︎

Grav Skeleton — это универсальный образец сайта. Они включают Grav Core, необходимые плагины, а также соответствующие страницы для контента и тему для объединения всего этого.

Grav был разработан, чтобы максимально упростить процесс создания сайта. По этой причине все, что вам нужно для сайта, может содержаться в папке user. Каждый из имеющихся в настоящее время каркасов - это просто папка user на GitHub, которую мы упаковываем с различными зависимостями (необходимые плагины и тема) в пакет, который можно просто распаковать, чтобы предоставить рабочий пример.

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

Требования каркасов⚓︎

Хороший каркас Grav требует определённых файлов для правильной работы, чтобы попасть в репозиторий Grav и отображаться в плагине админки. Убедитесь, что ваш каркас содержит все эти файлы:

  • .dependencies - файл для определения зависимостей темы и плагина для этого скелета.
  • blueprints.yaml - файл определения скелета и файл определения формы
  • CHANGELOG.md - файл журнала изменений, который должен быть в правильном формате Grav для согласованного рендеринга
  • README.md - required file to explain and preview the plugin
  • LICENSE - файл лицензии, возможно, MIT, если он соответствует ядру Grav
  • screenshot.jpg - предварительный просмотр темы с соотношением сторон 1:1. Должно быть не менее 800x800 пикселей.

Темы Grav⚓︎

Из-за тесной связи со страницами и темами Grav тема Grav является неотъемлемой и очень важной частью сайта Grav. Под этим мы подразумеваем, что каждая страница Grav ссылается на шаблон в теме, поэтому ваша тема должна предоставлять соответствующие шаблоны Twig, которые используют ваши страницы.

Движок шаблонов Twig - очень мощная система, и поскольку Grav действительно не накладывает никаких ограничений, вы можете создавать любой дизайн, какой захотите. Это одна из замечательных особенностей Grav, которая отличает Grav от традиционной CMS, имеющей слабую связь между контентом и дизайном.

Требования тем⚓︎

Хорошая тема Grav требует определённых файлов для правильной работы, чтобы попасть в репозиторий Grav и отображаться в плагине админки. Убедитесь, что ваша тема содержит все эти файлы:

  • yourtheme.php - PHP файл темы, который должен называться так же, как папка
  • yourtheme.yaml - файл конфигурации темы, который содержит любые параметры и информацию о наследовании потока
  • blueprints.yaml - файл определения темы и файл определения формы
  • CHANGELOG.md - файл журнала изменений, который должен быть в правильном формате Grav для согласованного рендеринга
  • README.md - требуемый файл для объяснения и предварительного просмотра темы
  • LICENSE - файл лицензии, возможно, MIT, если он соответствует ядру Grav
  • screenshot.jpg - предварительный просмотр темы с соотношением сторон 1:1. Должно быть не менее 800x800 пикселей.
  • thumbnail.jpg - уменьшенное изображение эскиза, используемое плагином админки. Соотношение сторон 1:1 и должно быть 300x300 пикселей.
  • languages.yaml (необязательно) - файл определения языка

Демо-контент⚓︎

С выпуском Grav 0.9.18 вы теперь можете предоставлять демонстрационный контент как часть плагина или пакета темы. Это означает, что всё, что находится в папке с именем _demo/, будет скопировано в папку user/ как часть процедуры установки. Это означает, что вы можете предоставить страницы, конфигурацию или что-нибудь ещё, что находится в папке user/. Пользователю предлагается сделать это, и это совершенно необязательно.

Обратите внимание, что демонстрационный контент не копируется, если ваш плагин или тема установлены через плагин Admin.

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

Когда вы создали новую тему или плагин и хотели бы, чтобы они были добавлены в репозиторий Grav, вам необходимо выполнить несколько стандартных действий:

  1. Добавить файл LICENSE, содержащий MIT-совместимую лицензию. Пример здесь
  2. Добавить файл README.md с описанием функций и инструкциями по его установке и настройке. Пример здесь
  3. Добавить файл blueprints.yaml со всеми обязательными полями. Пример здесь
  4. Предоставить CHANGELOG.md в правильном формате. Пример здесь
  5. Перечислить используемые библиотеки, скрипты, код.
  6. Создать релиз для плагина/темы. Система репозитория Grav требует наличия релиза и не найдет ваш плагин/тему, если нет релиза, содержащего всё вышеперечисленное.
  7. Добавить issue в трекере проблем Grav с подробной информацией о вашем плагине, и мы проведем его быстрый тест, чтобы убедиться, что он работает, а затем добавим его. Обратите внимание, что это не обязательно делать, если вы выпускаете новую версию плагина или темы, которая уже есть в репозитории. Она будет подхвачена автоматически.

Убедитесь, что ваше именование каждого тега согласовано. GPM использует эту информацию, чтобы определить, новее ли ваш плагин/тема, чем последний. Мы рекомендуем использовать Семантические номера версий для тегов. Например. 1.2.4. Согласованность для всех тегов имеет первостепенное значение!

Формат списка изменений⚓︎

Сайт GetGrav.org использует собственный формат журнала изменений, который написан с использованием стандартного Markdown, но с ним можно работать с помощью простого CSS и отображается в привлекательном формате. Чтобы гарантировать, что ваши журналы изменений могут быть проанализированы и отформатированы должным образом, используйте следующий синтаксис:

# vX.Y.Z
+## 01/01/2015
+
+1. [](#new)
+    * Добавленная фича
+    * Другая добавленная фича
+2. [](#improved)
+    * Сделанное улучшение
+    * Другое сделанное улучшение
+3. [](#bugfix)
+     * Реализованное исправление
+     * Другое реализованное исправление
+
+...повторять сколько нужно раз...
+

Каждый раздел #new, #improved, #bugfix необязателен, просто включите нужные разделы.

В датах можно использовать американский m/d/y формат даты или европейский формат d-m-y. Также убедитесь, что между заголовками (версия и дата) и списками (#new, #improved, #bugfix) есть пустая строка.

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

Как и в наши дни, GitHub станет вашим лучшим другом, когда дело доходит до разработки для Grav. Мы создали несколько инструментов, чтобы максимально упростить это, но есть некоторые шаблоны разработки, которым вы должны следовать, чтобы упростить процесс.

Клонируйте все репозитории, с которыми вы планируете работать, в одну папку Projects или Development на вашем компьютере. Это позволит нашим инструментам находить нужные репозитории.

Мы используем модель ветвления GitFlow для всей нашей разработки Grav. Основная концепция методологии GitFlow заключается в том, что разработка происходит в ветке develop, но новые функции и функции создаются в отдельных ветвях feature, которые по завершении объединяются в develop. Релизы объединяют develop в master, и вы можете применять ветки hotfix по мере необходимости в процессе выпуска. Большинство современных клиентов Git поддерживают это. Однако мы рекомендуем Atlassian SourceTree, поскольку он бесплатный, кроссплатформенный и простой в использовании.

Grav также имеет некоторые зависимости (продиктованные файлом .dependencies), которые включают плагины Error и Problems, а также тему Antimatter. Вы можете следовать этим инструкциям, чтобы клонировать эти частички на свой компьютер.

Если вы хотите внести дополнения или изменения в какой-либо из репозиториев getgrav, вам нужно будет создать форк соответствующего репозитория, а затем клонировать URL-адрес вашей вилки, а не напрямую репозиторий getgrav. В приведенном ниже примере используются только прямые репозитории getgrav.

cd
+mkdir Projects
+cd Projects
+mkdir Grav
+cd Grav
+git clone https://github.com/getgrav/grav.git
+git clone https://github.com/getgrav/grav-plugin-error.git
+git clone https://github.com/getgrav/grav-plugin-problems.git
+git clone https://github.com/getgrav/grav-theme-antimatter.git
+

Это клонирует все 4 репозитория в вашу папку ~/Projects/Grav.

Как правило, обычная процедура настройки тестового сайта для Grav заключается в использовании команды bin/grav new-project. Это верно для разработки, за исключением одного важного отличия. Поскольку мы хотим иметь возможность разрабатывать из вашего веб-корня, но чтобы в вашем клонированном коде отображались какие-либо изменения, нам необходимо символически связать соответствующие части. Мы делаем это, передавая флаг -s команде bin/grav new-project.

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

cd
+mkdir .grav
+vi .grav/config
+

В этом файле: укажите, где расположены соответствующие файлы:

github_repos: /Users/your_user/Projects/Grav/
+

Убедитесь, что вы сохранили этот файл и что он доступен для чтения. Теперь вы можете создать свой символически связанный сайт, где ~/www - это ваш корневой веб-сайт, а ~/www/grav - это место, где будет создан ваш новый сайт для тестирования Grav:

cd ~/Projects/Grav/grav
+bin/grav new-project -s ~/www/grav
+

Вы должны увидеть что-то вроде этого:

rhukster@gibblets:~/Projects/Grav/grav(develop○) » bin/grav new-project -s ~/www/grav
+
+Creating Directories
+    /cache
+    /logs
+    /images
+    /assets
+    /user/accounts
+    /user/config
+    /user/pages
+    /user/data
+    /user/plugins
+    /user/themes
+
+Resetting Symbolic Links
+    /index.php -> /Users/rhuk/www/grav/index.php
+    /composer.json -> /Users/rhuk/www/grav/composer.json
+    /bin -> /Users/rhuk/www/grav/bin
+    /system -> /Users/rhuk/www/grav/system
+
+Pages Initializing
+    /Users/rhuk/Projects/Grav/grav/user/pages -> Created
+
+File Initializing
+    /.dependencies -> Created
+    /.htaccess -> Created
+    /user/config/site.yaml -> Created
+    /user/config/system.yaml -> Created
+
+Permissions Initializing
+    bin/grav permissions reset to 755
+
+read local config from /Users/rhuk/.grav/config
+
+Symlinking Bits
+===============
+
+SUCCESS symlinked grav-plugin-problems -> user/plugins/problems
+
+SUCCESS symlinked grav-plugin-error -> user/plugins/error
+
+SUCCESS symlinked grav-theme-antimatter -> user/themes/antimatter
+

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

Вы должны указать в своем браузере http://localhost/grav и увидеть только что созданный тестовый сайт. Теперь любые изменения, внесенные вами в папку ~/www/grav, будут готовы к фиксации и отправке в ваши клонированные репозитории.

Обслуживание заброшенных проектов⚓︎

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

  1. Отправьте правильно сформированный протестированный запрос на перенос в исходный репозиторий.
  2. Если сопровождающий не отвечает вообще по прошествии 30 дней, или если сопровождающий заявляет, что покидает ресурс и не желает предоставлять кому-либо доступ на запись, переходите к следующему шагу.
  3. Отправьте новую issue в репозиторий Grav на GitHub со следующими данными:
    • Заголовок: [change-resource] Take over plugin/theme
    • Укажите название плагина и ссылку на исходный репозиторий.
    • Ссылка на ваш пул-реквест, оставшийся без ответа, или ссылку на беседу, в которой разработчик отказывается поддерживать свой ресурс.
  4. Сопровождающие Grav рассмотрят дело и сообщат вам, одобрено ли поглощение. Если одобрение предоставлено, переходите к следующему шагу.
  5. Подготовьте свой разветвленный репозиторий с новым релизом.
  6. Добавьте в README примечание, что этот репозиторий является новым главным, и сделайте обратную ссылку на старый репозиторий.
  7. Ответьте на issue, предоставив сопровождающим новый URL-адрес плагина.
  8. Сопровождающие обновят GPM, и новые и обновленные установки теперь будут поступать из вашего разветвленного репозитория.
\ No newline at end of file diff --git a/advanced/groups-and-permissions/index.html b/advanced/groups-and-permissions/index.html new file mode 100644 index 00000000..12226d2a --- /dev/null +++ b/advanced/groups-and-permissions/index.html @@ -0,0 +1,37 @@ + Группы и разрешения - Документация Grav CMS на русском
Перейти к содержанию

Группы и разрешения⚓︎

См. ЧаВо по админке, чтобы узнать, как управлять пользователями

Определение групп⚓︎

По умолчанию Grav не предоставляет никаких групп. Вам нужно их определить.

Группы определены в файле user/config/groups.yaml. Если этот файл ещё не существует, создайте его.

Вот пример определения группы пользователей:

registered:
+  icon: users
+  readableName: 'Registered Users'
+  description: 'The group of registered users'
+  access:
+    site:
+      login: true
+paid:
+  readableName: 'Paid Members'
+  description: 'The group of paid members'
+  icon: money
+  access:
+    site:
+      login: true
+      paid: true
+administrators:
+  groupname: administrators
+  readableName: Administrators
+  description: 'The group of administrators'
+  icon: child
+  access:
+    admin:
+      login: true
+    site:
+      login: true
+

Здесь мы определяем 3 группы.

Включение пользователя в группу⚓︎

Каждого пользователя можно назначить в группу.

Просто добавьте

groups:
+  - paid
+

в файл yaml пользователя в папке user/accounts.

Вы можете добавить несколько групп:

groups:
+  - administrators
+  - another-group
+

Вы также можете редактировать информацию о группе пользователя с помощью подключаемого модуля администратора.

Разрешения⚓︎

Пользователи, назначенные группе, наследуют разрешения группы. Например, вы можете определить группу с разрешением site.paid, добавив:

access:
+  site:
+    paid: true
+

к определению группы в user/config/groups.yaml.

Когда пользователь попадает в эту группу, он наследует разрешение site.paid: true.

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

Тонкая настройка разрешений на уровне пользователя⚓︎

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

access:
+  site:
+    paid: false
+

в файл user.yaml.

См. ЧаВо по админке, чтобы узнать больше о доступных уровнях доступа

\ No newline at end of file diff --git a/advanced/multisite-setup/index.html b/advanced/multisite-setup/index.html new file mode 100644 index 00000000..0af73f0a --- /dev/null +++ b/advanced/multisite-setup/index.html @@ -0,0 +1,245 @@ + Настройка мультисайта - Документация Grav CMS на русском
Перейти к содержанию

Настройка мультисайта⚓︎

В Grav есть поддержка нескольких сайтов. Однако плагин админки по-прежнему нуждается в обновлении для полной поддержки многосайтовых конфигураций. Мы продолжим работать над этим в следующих выпусках Grav.

Что такое многосайтовая установка?⚓︎

Многосайтовая установка позволяет вам создавать и управлять сетью из нескольких веб-сайтов, работающих на одной установке.

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

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

Требования к установке Grav Multisite⚓︎

Самое главное, что вам понадобится для работы в многосайтовой сети Grav — это хороший хостинг веб-сайтов. Если вы не планируете создавать много сайтов и не ожидаете большого количества посетителей, то вы можете обойтись виртуальным хостингом. Однако из-за природы мультисайтов вам, вероятно, понадобится VPS или выделенный сервер по мере роста ваших сайтов.

Настройка и установка⚓︎

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

Это важно, поскольку обслуживание нескольких веб-сайтов из одной и той же установки основано на файле setup.php, расположенном в вашем корне Grav.

Быстрый старт (для начинающих)⚓︎

После создания setup.php вызывается каждый раз, когда пользователь запрашивает страницу. Чтобы обслуживать несколько веб-сайтов из одной установки, этот сценарий (грубо говоря) должен сообщать Grav, где находятся файлы (для конфигураций, тем, плагинов, страниц и т. д.) Для определенного дочернего сайта.

Приведенные ниже фрагменты настраивают вашу установку Grav таким образом, чтобы запрос вроде

https://<subsite>.example.com   -->   user/sites/<subsite>.example.com
+
или
https://example.com/<subsite>   -->   user/sites/<subsite>
+

будет использовать каталог user/env в качестве базового пути для «user» вместо каталога user.

Если вы выбираете подкаталоги или URL-адреса на основе пути для дочерних сайтов, то единственное, что вам нужно, это создать каталог для каждого дочернего сайта в каталоге user/env, содержащий как минимум необходимые папки config, pages, plugins и themes.

Если вы выберете субдомены для структурирования сети своего веб-сайта, вам придется настроить (подстановочные) субдомены на своем сервере в дополнение к настройке ваших дочерних сайтов в каталоге user/env.

В любом случае, решите, какая установка вам больше подходит.

Сниппеты⚓︎

Для дочерних сайтов, доступных через поддомены, скопируйте файл setup_subdomain.php, в противном случае для дочерних сайтов, доступных через подкаталоги, файл setup_subdirectory.php в ваш setup.php.

Файл setup.php должен быть помещен в корневую папку Grav, ту же папку, где вы можете найти index.php, README.md и другие файлы Grav.

setup_subdomain.php
<?php
+/**
+ * Multisite setup for subsites accessible via sub-domains.
+ *
+ * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
+ */
+
+use Grav\Common\Utils;
+
+// Get subsite name from sub-domain
+$environment = isset($_SERVER['HTTP_HOST'])
+    ? $_SERVER['HTTP_HOST']
+    : (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost');
+// Remove port from HTTP_HOST generated $environment
+$environment = strtolower(Utils::substrToString($environment, ':'));
+$folder = "env/{$environment}";
+
+if ($environment === 'localhost' || !is_dir(ROOT_DIR . "user/{$folder}")) {
+    return [];
+}
+
+return [
+    'environment' => $environment,
+    'streams' => [
+        'schemes' => [
+            'user' => [
+               'type' => 'ReadOnlyStream',
+               'prefixes' => [
+                   '' => ["user/{$folder}"],
+               ]
+            ]
+        ]
+    ]
+];
+

setup_subdirectory.php:

<?php
+/**
+ * Multisite setup for sub-directories or path based
+ * URLs for subsites.
+ *
+ * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
+ */
+
+use Grav\Common\Filesystem\Folder;
+
+// Get relative path from Grav root.
+$path = isset($_SERVER['PATH_INFO'])
+   ? $_SERVER['PATH_INFO']
+   : Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR);
+
+// Extract name of subsite from path
+$name = Folder::shift($path);
+$folder = "env/{$name}";
+$prefix = "/{$name}";
+
+if (!$name || !is_dir(ROOT_DIR . "user/{$folder}")) {
+    return [];
+}
+
+// Prefix all pages with the name of the subsite
+$container['pages']->base($prefix);
+
+return [
+    'environment' => $name,
+    'streams' => [
+        'schemes' => [
+            'user' => [
+               'type' => 'ReadOnlyStream',
+               'prefixes' => [
+                   '' => ["user/{$folder}"],
+               ]
+            ]
+        ]
+    ]
+];
+

При использовании подкаталогов для переключения языковых контекстов вам может потребоваться загружать различные конфигурации в зависимости от языка. Вы можете поместить свои языковые конфигурации в config/<lang-context>/site.yaml, используя пример для setup_subdir_config_switch.php ниже. Таким образом yoursite.com/de-AT/index.html будет загружать config/de-AT/site.yaml, yoursite.com/de-CH/index.html будет загружать config/de-CH/site.yaml и так далее.

setup_subdir_config_switch.php:

<?php
+/**
+ * Switch config based on the language context subdir
+ *
+ * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
+ */
+
+use Grav\Common\Filesystem\Folder;
+
+$languageContexts = [
+    'de-AT',
+    'de-CH',
+    'de-DE',
+];
+
+// Get relative path from Grav root.
+$path = isset($_SERVER['PATH_INFO'])
+    ? $_SERVER['PATH_INFO']
+    : Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR);
+
+// Extract name of subdir from path
+$name = Folder::shift($path);
+
+if (in_array($name, $languageContexts)) {
+    return [
+        'streams' => [
+            'schemes' => [
+                'config' => [
+                    'type' => 'ReadOnlyStream',
+                    'prefixes' => [
+                        '' => [
+                            'environment://config',
+                            'user://config/' . $name,
+                            'user://config',
+                            'system/config',
+                        ],
+                    ],
+                ],
+            ],
+        ],
+    ];
+}
+
+return [];
+

GPM (менеджер пакетов Grav) и несколько настроек⚓︎

Если вам необходимо управлять плагинами и темами ваших подсайтов с помощью GPM, храните user/themes и user/plugins, чтобы GPM получал и обновлял их в одном месте. Затем создайте символические ссылки на user/env/my.site.com/themes или user/env/my.site.com/plugins. Затем настройте отдельные yaml-конфигурации user/env/my.site.com/config/plugins для каждого подсайта.

Расширенная конфигурация (для экспертов)⚓︎

После создания setup.php получите доступ к двум важным переменным: (i) $container, который является ещё не инициализированным должным образом экземпляр Grav и (ii) $self, который является экземпляром класса ConfigServiceProvider.

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

В конце концов, setup.php должен возвращать ассоциативный массив с необязательным именем среды environment и коллекцией потоков streams (подробнее и о том, как правильно их настроить, см. раздел Потоки):

<?php
+
+return [
+  'environment' => '<name>',            // Название окружения
+  'streams' => [
+    'schemes' => [
+      '<stream_name>' => [              // Название потока
+        'type' => 'ReadOnlyStream',     // Объект потока, например: 'ReadOnlyStream' или 'Stream'
+        'prefixes' => [
+          '<prefix>' => [
+            '<path1>',
+            '<path2>',
+            '<etc>'
+          ]
+        ],
+        'paths' => [                    // Пути (не обязательно)
+          '<paths1>',
+          '<paths2>',
+          '<etc>'
+        ]
+      ]
+    ]
+  ]
+]
+

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

Потоки⚓︎

Grav использует URI-подобные потоки для определения всех путей к файлам в Grav. Использование потоков позволяет очень легко настроить пути поиска для любого файла.

По умолчанию потоки были настроены следующим образом:

  • user:// - папка пользователя, например user/
  • page:// - папка страниц, например user://pages/
  • image:// - папка изображений, например user://images/, system://images/
  • account:// - папка учётных записей, например user://accounts/
  • environment:// - текущее местоположение нескольких сайтов.
  • asset:// - папка скомпилированных активов JS/CSS, например assets/
  • blueprints:// - папка чертежей, например environment://blueprints/, user://blueprints/, system://blueprints/
  • config:// - папка конфигураций, например environment://config/, user://config/, system://config/
  • plugins:// - папка плагинов, например user://plugins/
  • themes:// - папка тем, например user://themes/
  • theme:// - папка текущей темы, например themes://antimatter/
  • languages:// - папка языков, например environment://languages/, user://languages/, system://languages/
  • user-data:// - папка данных, например user/data/
  • system:// - папка файлов движка, например system/
  • cache:// - папка кэша, например cache/, images/
  • log:// - папка логов, например logs/
  • backup:// - папка резервных копий, например backups/
  • tmp:// - папка временных файлов, например tmp/

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

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

user/env/domain.com/config/streams.yaml:

schemes:
+  account:
+    type: ReadOnlyStream
+    prefixes:
+      '': ['environment://accounts']
+  page:
+    type: ReadOnlyStream
+    prefixes:
+      '': ['environment://user']
+  image:
+    type: Stream
+    prefixes:
+      '': ['environment://images', 'system://images/']
+  'user-data':
+    type: Stream
+    prefixes:
+      '': ['environment://data']
+  cache:
+    type: Stream
+    prefixes:
+      '': ['cache/domain.com']
+      images: ['images/domain.com']
+  log:
+    type: Stream
+    prefixes:
+      '': ['logs/domain.com']
+

In Grav streams are objects, mapping a set of physical directories of the system to a logical device. They are classified via their type attribute. For read-only streams that's the ReadOnlyStream type and for read-writeable streams that's the Stream type.

For example, if you use image://mountain.jpg stream, Grav looks up environment://images (user/env/domain.com/images) and system://images (system/images). This means that streams can be used to define other streams.

Prefixes allows you to combine several physical paths into one logical stream. If you look carefully at cache stream definition, it is a bit different. In this case cache:// resolves to cache, but cache://images resolves to images.

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

Grav 1.7 добавляет поддержку настройки начальной среды из конфигурации вашего сервера.

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

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

Вы можете использовать либо переменные среды, либо константы PHP, но они должны быть установлены перед запуском Grav.

Переменная Значение по умолчанию Описание
GRAV_SETUP_PATH AUTO DETECT Пользовательский путь к setup.php, включая имя файла. По умолчанию Grav просматривает файл из GRAV_ROOT/setup.php и GRAV_ROOT/GRAV_USER_PATH/setup.php.
GRAV_USER_PATH user Относительный путь для потока user://.
GRAV_CACHE_PATH cache Относительный путь для потока cache://.
GRAV_LOG_PATH logs Относительный путь для потока log://.
GRAV_TMP_PATH tmp Относительный путь для потока tmp://.
GRAV_BACKUP_PATH backup Относительный путь для потока backup://.

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

Они также работают из файла setup.php. Вы можете сделать их константами, используя define(), или переменные среды с putenv(). Константы предпочтительнее переменных среды.

Переменная Значение по умолчанию Описание
GRAV_ENVIRONMENT DOMAIN NAME Имя среды. Может использоваться, например, в контейнерах докеров для установки настраиваемой среды, которая не зависит от имени домена, например production и develop.
GRAV_ENVIRONMENTS_PATH user://env Путь поиска для всех сред, если вы предпочитаете что-то вроде user://sites. Может быть потоком или относительным путем от GRAV_ROOT.
GRAV_ENVIRONMENT_PATH user://env/ENVIRONMENT Иногда может быть полезно указать настраиваемое местоположение для вашей среды.

Переопределения конфигурации на основе сервера⚓︎

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

Поскольку переменные среды имеют строгие требования к именованию (они могут содержать только A-Z, a-z, 0-9 и _), необходимы некоторые уловки, чтобы заставить работать переопределения конфигурации.

Вот пример простого переопределения конфигурации с использованием формата YAML для презентации:

GRAV_CONFIG: true                           # If false, the configuration here will be ignored.
+GRAV_CONFIG_ALIAS__GITHUB: plugins.github   # Create alias GITHUB='plugins.github' to shorten the variable names below
+GRAV_CONFIG__GITHUB__auth__method: api      # Override config.plugins.github.auth.method = api
+GRAV_CONFIG__GITHUB__auth__token: xxxxxxxx  # Override config.plugins.github.auth.token = xxxxxxxx
+

В приведенном выше примере __ (двойное подчеркивание) представляет вложенную переменную, которая в Twig представлена ​​с помощью точки (.).

Вы также можете использовать переменные среды в setup.php. Это позволяет, например, хранить секреты вне конфигурации:

user/setup.php:

<?php
+
+// Use following environment variables in your server configuration:
+//
+// DYNAMODB_SESSION_KEY: DynamoDb server key for the PHP session storage
+// DYNAMODB_SESSION_SECRET: DynamoDb server secret
+// DYNAMODB_SESSION_REGION: DynamoDb server region
+// GOOGLE_MAPS_KEY: Google Maps secret key
+
+return [
+    'plugins' => [
+        // This plugin does not exist
+        'dynamodb_session' => [
+            'credentials' => [
+                'key' => getenv('DYNAMODB_SESSION_KEY') ?: null,
+                'secret' => getenv('DYNAMODB_SESSION_SECRET') ?: null
+            ],
+            'region' => getenv('DYNAMODB_SESSION_REGION') ?: null
+        ],
+        // This plugin does not exist
+        'google_maps' => [
+            'key' => getenv('GOOGLE_MAPS_KEY') ?: null
+        ]
+    ]
+];
+

setup.php используется для установки начальной конфигурации. Если плагин или ваша конфигурация позже переопределят эти настройки, исходные значения будут потеряны.

После определения переменных в setup.php вы можете установить их на своем сервере:

<VirtualHost 127.0.0.1:80>
+    ...
+
+    SetEnv GRAV_SETUP_PATH         user/setup.php
+    SetEnv GRAV_ENVIRONMENT        production
+    SetEnv DYNAMODB_SESSION_KEY    JBGARDQ06UNJV00DL0R9
+    SetEnv DYNAMODB_SESSION_SECRET CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7
+    SetEnv DYNAMODB_SESSION_REGION us-east-1
+    SetEnv GOOGLE_MAPS_KEY         XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp
+</VirtualHost>
+
location / {
+    ...
+
+    fastcgi_param GRAV_SETUP_PATH         user/setup.php;
+    fastcgi_param GRAV_ENVIRONMENT        production;
+    fastcgi_param DYNAMODB_SESSION_KEY    JBGARDQ06UNJV00DL0R9;
+    fastcgi_param DYNAMODB_SESSION_SECRET CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7;
+    fastcgi_param DYNAMODB_SESSION_REGION us-east-1;
+    fastcgi_param GOOGLE_MAPS_KEY         XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp;
+}
+
location / {
+    ...
+
+    env[GRAV_SETUP_PATH]          = user/setup.php
+    env[GRAV_ENVIRONMENT]         = production
+    env[DYNAMODB_SESSION_KEY]     = JBGARDQ06UNJV00DL0R9
+    env[DYNAMODB_SESSION_SECRET]  = CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7
+    env[GDYNAMODB_SESSION_REGION] = us-east-1
+    env[GGOOGLE_MAPS_KEY]         = XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp
+}
+
web:
+environment:
+    - GRAV_SETUP_PATH=user/setup.php
+    - GRAV_ENVIRONMENT=production
+    - DYNAMODB_SESSION_KEY=JBGARDQ06UNJV00DL0R9
+    - DYNAMODB_SESSION_SECRET=CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7
+    - DYNAMODB_SESSION_REGION=us-east-1
+    - GOOGLE_MAPS_KEY=XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp
+
<?php
+putenv('GRAV_SETUP_PATH', 'user/setup.php');
+putenv('GRAV_ENVIRONMENT', 'production');
+putenv('DYNAMODB_SESSION_KEY', 'JBGARDQ06UNJV00DL0R9');
+putenv('DYNAMODB_SESSION_SECRET', 'CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7');
+putenv('DYNAMODB_SESSION_REGION', 'us-east-1');
+putenv('GOOGLE_MAPS_KEY', 'XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp');
+

В этом примере сервер также будет использовать среду production, хранящуюся в папке user/env/production.

\ No newline at end of file diff --git a/advanced/multisite-setup/setup_subdir_config_switch.php b/advanced/multisite-setup/setup_subdir_config_switch.php new file mode 100644 index 00000000..7b7813f3 --- /dev/null +++ b/advanced/multisite-setup/setup_subdir_config_switch.php @@ -0,0 +1,44 @@ + [ + 'schemes' => [ + 'config' => [ + 'type' => 'ReadOnlyStream', + 'prefixes' => [ + '' => [ + 'environment://config', + 'user://config/' . $name, + 'user://config', + 'system/config', + ], + ], + ], + ], + ], + ]; +} + +return []; diff --git a/advanced/multisite-setup/setup_subdirectory.php b/advanced/multisite-setup/setup_subdirectory.php new file mode 100644 index 00000000..238d76ce --- /dev/null +++ b/advanced/multisite-setup/setup_subdirectory.php @@ -0,0 +1,40 @@ +base($prefix); + +return [ + 'environment' => $name, + 'streams' => [ + 'schemes' => [ + 'user' => [ + 'type' => 'ReadOnlyStream', + 'prefixes' => [ + '' => ["user/{$folder}"], + ] + ] + ] + ] +]; diff --git a/advanced/multisite-setup/setup_subdomain.php b/advanced/multisite-setup/setup_subdomain.php new file mode 100644 index 00000000..efbb2ee2 --- /dev/null +++ b/advanced/multisite-setup/setup_subdomain.php @@ -0,0 +1,34 @@ + $environment, + 'streams' => [ + 'schemes' => [ + 'user' => [ + 'type' => 'ReadOnlyStream', + 'prefixes' => [ + '' => ["user/{$folder}"], + ] + ] + ] + ] +]; diff --git a/advanced/performance-and-caching/index.html b/advanced/performance-and-caching/index.html new file mode 100644 index 00000000..158d9901 --- /dev/null +++ b/advanced/performance-and-caching/index.html @@ -0,0 +1,35 @@ + Производительность и кэширование - Документация Grav CMS на русском
Перейти к содержанию

Производительность и кэширование⚓︎

Одна из основных характеристик, которые делают Grav настолько привлекательным — это её скорость. Это всегда было ключевым моментом в конструкции Grav, и в первую очередь это связано с кэшированием, но включает несколько других компонентов.

Производительность⚓︎

  1. Кэширование PHP имеет решающее значение. Вы должны запустить PHP opcache и usercache, чтобы получить максимальную производительность от Grav. В PHP 5.5 и 5.6 Zend opcache с APCu user cache работает немного быстрее.
  2. SSD-накопители могут иметь большое значение. Большинство вещей можно кэшировать в пользовательском кэше PHP, но некоторые хранятся в виде файлов, поэтому SSD-диски могут сильно повлиять на производительность.
  3. Собственный хостинг всегда будет быстрее, чем виртуальная машина. Виртуальные машины — отличный способ, с помощью которого хостинг-провайдеры могут предложить гибкие среды «облачного» типа. Они добавляют уровень обработки, который всегда влияет на производительность. Grav всё ещё может быть быстрым на виртуальной машине (намного быстрее, чем Wordpress, Joomla и т. д.), Но всё же для оптимальной производительности вы не можете превзойти вариант нативного хостинга.
  4. Чем быстрее память, тем лучше. Поскольку Grav работает очень быстро и многие из его решений для кэширования сильно используют память, скорость памяти на вашем сервере может иметь большое влияние на производительность. Grav не использует большие объемы памяти по сравнению с некоторыми платформами, поэтому объем памяти не так важен и не влияет на производительность так сильно, как тип памяти и скорость.
  5. Общий хостинг дешев и доступен, но совместное использование ресурсов всегда немного замедляет работу. Опять же, Grav может очень хорошо работать на общем сервере (лучше, чем другие CMS), но для максимальной скорости лучше всего использовать выделенный сервер.
  6. Многоядерные процессоры лучше. Всегда помогут более быстрые и продвинутые процессоры, но не так сильно, как другие моменты.
  7. Парсер PECL Yaml. Установка собственного PHP-парсера PECL Yaml может увеличить анализ YAML на целых 400%! На это стоит обратить внимание, если вы ищете дополнительную скорость.

Getgrav.org работает на одном выделенном сервере с четырехъядерными процессорами, 16 ГБ памяти и твердотельными накопителями объёмом 6 ГБ. Мы также запускаем PHP 7.4 с Zend opcache и пользовательским кэшем APCu. На веб-серверах работает несколько других веб-сайтов, но не так много, как в среде общего хостинга.

Параметры кэширования⚓︎

Кэширование - это неотъемлемая функция Grav, которая заложена с самого начала. Механизм кэширования, который использует Grav, является основной причиной того, что Grav работает так быстро. Тем не менее, необходимо учитывать некоторые факторы.

Grav использует хорошо зарекомендовавшую себя библиотеку Doctrine Cache. Это означает, что Grav поддерживает любой механизм кэширования, поддерживаемый Doctrine Cache:

По умолчанию Grav предварительно настроен на использование параметра «auto». Сначала идет попытка обнаружения APC, затем WinCache, затем XCache и, наконец, File. Вы, конечно, можете явно настроить кэш в вашем файле user/config/system.yaml, что может немного ускорить работу.

Типы кэширования⚓︎

На самом деле в Grav существует 5 типов кэширования:

  1. Кэширование конфигурации YAML в PHP.
  2. Кэширование Core Grav для объектов страницы.
  3. Кэширование файлов шаблонов в Twig в виде классов PHP.
  4. Кэширование изображений для медиаресурсов.
  5. Кэширование ресурсов CSS и JQuery с конвейерной обработкой.

Кэширование конфигурации YAML не настраивается и всегда будет компилировать и кэшировать конфигурацию в папку /cache. Кэширование изображений также всегда включено и сохраняет обработанные изображения в папке /images.

Кэширование ядра Grav⚓︎

Кэширование ядра Grav имеет следующие параметры конфигурации, настроенные в вашем файле user/config/system.yaml:

cache:
+  enabled: true                        # Установите значение `true`, чтобы включить кэширование
+  check:
+    method: file                       # Метод проверки обновлений на страницах: file|folder|hash|none
+  driver: auto                         # Один из: auto|file|apc|xcache|memcache|wincache|redis
+  prefix: 'g'                          # Строка префикса кэша (предотвращает конфликты)
+

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

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

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

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

Если автоматическое повторное кэширование измененных страниц не критично для вас (или если ваш сайт довольно большой), то установка этого значения на none ещё больше ускорит производственную среду. Вам просто нужно будет вручную очистить кэш после внесения изменений. Это предназначено для параметра Production-only.

Удаление страницы не очищает кэш, так как очистка кэша основана на метках времени изменения папок.

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

Специальные параметры Memcache⚓︎

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

cache:
+  ...
+  memcache:
+    server: localhost
+    port: 11211
+

Специальные параметры Memcached⚓︎

Подобно memcache, memcached имеет некоторые дополнительные параметры конфигурации, которые требуются, если вы подключаетесь к серверу memcached через параметр драйвера memcached. Эти параметры должны находиться в группе cache: в вашем user/config/system.yaml:

cache:
+  ...
+  memcached:
+    server: localhost
+    port: 11211
+

Специальные параметры Redis⚓︎

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

cache:
+  ...
+  redis:
+    server: localhost
+    port: 6379
+

В качестве альтернативы вы можете использовать соединение через сокет:

cache:
+  ...
+  redis:
+    socket: '/tmp/redis.sock'
+

Если ваш сервер Redis имеет пароль или секретный ключ, вы также можете установить его в этой конфигурации:

cache:
+  ...
+  redis:
+    password: your-secret
+

Вам также понадобится php-redis, установленный в вашей системе.

Специальные параметры Twig⚓︎

Механизм создания шаблонов Twig использует свою собственную файловую систему кэширования, и с ней связано несколько параметров.

twig:
+  cache: false                          # Установите значение `true`, чтобы включить кэширование Twig
+  debug: true                           # Включить отладку Twig
+  auto_reload: true                     # Обновлять кэш при изменениях
+  autoescape: false                     # Экранирование переменных Twig
+

Для небольшого увеличения производительности вы можете отключить расширение debug, а также отключить auto_reload, которое выполняет функцию, аналогичную cache: check: method: none, так как оно не будет искать изменения в файлах .html.twig для запуска обновления кэш.

Кэширование и события⚓︎

По большей части, события всё ещё запускаются даже при включенном кэшировании. Это справедливо для всех событий, за исключением onPageContentRaw, onPageProcessed, onPageContentProcessed, onTwigPageVariables и onFolderProcessed. Эти события запускаются при рекурсии всех страниц и папок и запускаются на каждой найденной странице или папке. Как следует из их названия, они запускаются только во время обработки, а не после кэширования страницы.

\ No newline at end of file diff --git a/advanced/plugin-prioritization/index.html b/advanced/plugin-prioritization/index.html new file mode 100644 index 00000000..83625762 --- /dev/null +++ b/advanced/plugin-prioritization/index.html @@ -0,0 +1,7 @@ + Приоритезация плагинов - Документация Grav CMS на русском
Перейти к содержанию

Приоритезация плагинов⚓︎

Когда несколько плагинов прослушивают одни и те же перехватчики событий (подробности см. на странице Плагины > Перехватчики событий), различные обработчики выполняются в порядке «приоритета». Приоритет — это просто число. Чем выше число, тем раньше будет выполнен обработчик.

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

Сначала определите, какие обработчики нужно настроить и как. Это сложная задача, требующая, чтобы вы могли читать файл .php плагина. Обычно перехватчики событий, функции обработчиков и приоритеты по умолчанию можно найти в функции плагина onPluginsInitialized().

Затем создайте файл user/config/sizes.yaml. Данные должны быть структурированы следующим образом:

pluginName:
+    eventName:
+        handlerName: [integer]
+

Так, например, предположим, что у вас есть плагин под названием essential, который прослушивает событиеonPageInitialized, вызывая функцию handlePage с приоритетом 0. Предположим, вы обнаруживаете, что вам нужен этот приоритет, равный 100. чтобы убедиться, что он запускается перед другим плагином. Вы должны добавить в свой файл user/config/sizes.yaml следующее:

essential:
+    onPageInitialized:
+        handlePage: 100
+
\ No newline at end of file diff --git a/advanced/scheduler/index.html b/advanced/scheduler/index.html new file mode 100644 index 00000000..9d2539e8 --- /dev/null +++ b/advanced/scheduler/index.html @@ -0,0 +1,88 @@ + Планировщик - Документация Grav CMS на русском
Перейти к содержанию

Планировщик⚓︎

Планировщик Grav — это новая функция, которая была добавлена ​​в Grav 1.6, которая позволяет запускать задания на периодической основе. Базовая обработка зависит от серверного планировщика cron, но после добавления одной записи в службу cron все задания и определённые расписания могут быть настроены через Grav.

Одним из основных преимуществ использования планировщика для обработки задач является то, что они могут выполняться без какого-либо взаимодействия с пользователем и независимо от внешнего интерфейса. Такие задачи, как периодическая очистка кэша, резервное копирование, синхронизация, поисковое индексирование и т. д., являются основными кандидатами на выполнение запланированных заданий.

Установка⚓︎

Первым шагом на пути к настройке планировщика и его готовности к выполнению задач является добавление команды bin/grav scheduler в службу cron. Самый простой подход - использовать саму команду CLI для вывода соответствующей команды для запуска для установки:

$ bin/grav scheduler -i
+
+Install Scheduler
+=================
+
+ [ERROR] You still need to set up Grav's Scheduler in your crontab
+
+ ! [NOTE] To install, run the following command from your terminal:
+
+ (crontab -l; echo "* * * * * cd /Users/andym/grav;/usr/local/bin/php bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
+

В системе Mac отображается полная требуемая команда, поэтому всё, что вам нужно сделать, это скопировать и вставить команду в терминал и нажать return.

Вам необходимо войти в оболочку под тем же пользователем, что и ваш веб-сервер. Это необходимо для того, чтобы пользователь, выполняющий команды schdeduler, соответствовал пользователю веб-сервера, которому необходимо взаимодействовать с этими файлами. Если вы устанавливаете запись crontab с другим пользователем (например, root), любые созданные файлы будут создаваться от имени этого пользователя root, а не пользователя webserver, что может привести к проблемам.

(crontab -l; echo "* * * * * cd /Users/andym/grav;/usr/local/bin/php bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
+

Вы не получите ответа, но и ошибок получить не должны. После этого можно убедиться, что всё в порядке, повторно запустив команду bin/grav scheduler -i:

bin/grav scheduler -i
+
+Install Scheduler
+=================
+
+ [OK] All Ready! You have already set up Grav's Scheduler in your crontab
+

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

Основы планирования⚓︎

Для планирования работы частота контролируется гибким форматом.

* * * * * *
+| | | | | |
+| | | | | +-- Year              (диапазон: 1900-3000)
+| | | | +---- Day of the Week   (диапазон: 1-7, 1 — понедельник)
+| | | +------ Month of the Year (диапазон: 1-12)
+| | +-------- Day of the Month  (диапазон: 1-31)
+| +---------- Hour              (диапазон: 0-23)
++------------ Minute            (диапазон: 0-59)
+

Некоторые примеры:

0 * * * * запускать один раз в час (каждый час на нулевой минуте) 0 0 * * * запускать один раз в день (каждый день в полночь и в нулевую минуту) 0 0 1 * * запускать один раз в месяц (первого числа каждого месяца в полночь и в нулевую минуту) 0 0 1 1 * запускать один раз в год (в первый день первого месяца каждого года в полночь и в нулевую минуту)

Расширенные опции:

*/5 * * * * запускать каждые 5 минут

Файл конфигурации⚓︎

Вы можете увидеть, какие задания в настоящее время доступны для Планировщика, выполнив команду bin/grav scheduler -j:

bin/grav scheduler -j
+
+Scheduler Jobs Listing
+======================
+
+┌─────────────────────┬────────────────────────────────────┬───────────┬─────────┬──────────────────┬─────────┐
+ Job ID               Command                             Run At     Status   Last Run          State   │
+├─────────────────────┼────────────────────────────────────┼───────────┼─────────┼──────────────────┼─────────┤
+ cache-purge          Grav\Common\Cache::purgeJob         * * * * *  Success  2019-02-21 11:23  Enabled │
+ cache-clear          Grav\Common\Cache::clearJob         * * * * *  Success  2019-02-21 11:23  Enabled │
+ default-site-backup  Grav\Common\Backup\Backups::backup  0 3 * * *  Ready    Never             Enabled │
+ pages-backup         Grav\Common\Backup\Backups::backup  * 3 * * *  Success  2018-09-20 09:55  Enabled │
+ ls-job               ls                                  * * * * *  Success  2019-02-21 11:23  Enabled │
+└─────────────────────┴────────────────────────────────────┴───────────┴─────────┴──────────────────┴─────────┘
+
+ ! [NOTE] For error details run "bin/grav scheduler -d"
+

Планировщик Grav управляется основным файлом конфигурации. Он находится в user/config/scheduler.yaml, и для его выполнения требуется, чтобы любое задание было enabled.

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

status:
+  ls-job: enabled
+  cache-purge: enabled
+  cache-clear: enabled
+  default-site-backup: enabled
+  pages-backup: enabled
+

Чтобы увидеть более подробную информацию о любых потенциальных ошибках или увидеть, когда задание будет запущено в следующий раз, вы можете использовать команду /bin/grav scheduler -d:

bin/grav scheduler -d
+
+Job Details
+===========
+
+┌─────────────────────┬──────────────────┬──────────────────┬────────┐
+ Job ID               Last Run          Next Run          Errors │
+├─────────────────────┼──────────────────┼──────────────────┼────────┤
+ cache-purge          2019-02-21 11:29  2019-02-21 11:31  None   │
+ cache-clear          2019-02-21 11:29  2019-02-21 11:31  None   │
+ default-site-backup  Never             2019-02-22 03:00  None   │
+ pages-backup         2018-09-20 09:55  2019-02-22 03:00  None   │
+ ls-job               2019-02-21 11:29  2019-02-21 11:31  None   │
+└─────────────────────┴──────────────────┴──────────────────┴────────┘
+

Запуск заданий вручную⚓︎

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

bin/grav scheduler
+

Это автоматически запустит задания, но вы также можете увидеть подробности того, что запускается, используя:

bin/grav scheduler -v
+

Системные задания Grav⚓︎

Ядро Grav обеспечивает несколько рабочих мест прямо из коробки. К ним относятся некоторые полезные задачи технического обслуживания:

  • cache-purge — Эта задача полезна, если вы используете кэширование файлов Grav, поскольку оно удаляет старые файлы, срок действия которых истек. Это отличная задача для планирования, поскольку в противном случае пользователю потребовалось бы вручную очистить старые кэши. Если вы не уследите за этим, а ваше файловое пространство ограничено, у вас может закончиться место и сервер выйдет из строя.

  • cache-clear — Очистка кэша — это задание, которое работает так же, как команда bin/grav clear, которую вы выполняете вручную. Вы можете настроить, хотите ли вы использовать «стандартную» очистку кэша или вариант all, который удаляет все файлы и папки в папке cache/ для более тщательной очистки кэша.

  • default-site-backup — Задание резервного копирования по умолчанию, доступное в новой конфигурации Grav Backup. Вы можете создавать собственные конфигурации резервного копирования, и они также будут доступны для запуска в качестве запланированного задания.

Пользовательские задания⚓︎

В Grav Scheduler можно вручную настроить любое количество пользовательских заданий. Их можно настроить в том же файле конфигурации scheduler.yaml, упомянутом выше. Например, указанная выше команда ls-job может быть настроена:

custom_jobs:
+  ls-job:
+    command: ls
+    args: '-lah'
+    at: '* * * * *'
+    output: logs/cron-ls.out
+    output_mode: overwrite
+    email: user@email.com
+

Командой должен быть любой локальный сценарий, который можно запустить из командной строки/терминала. Требуются только атрибуты command и at.

Задания, предоставляемые плагинами⚓︎

Одна из самых мощных функций Grav Scheduler — это возможность сторонних плагинов создавать собственные задания. Прекрасный пример этого — плагин TNT Search. TNT Search — это полнофункциональная система текстового поиска, которая требует, чтобы контент был проиндексирован, прежде чем его можно будет искать. Это задание индексации может выполняться различными способами, но Grav Scheduler позволяет вам периодически переиндексировать ваш контент, вместо того, чтобы делать это вручную.

Первым делом ваш плагин должен подписаться на событие onSchedulerInitialized(). А затем создайте метод в своем файле плагина, который может добавлять настраиваемое задание при вызове:

<?php
+
+public function onSchedulerInitialized(Event $e): void
+{
+    $config = $this->config();
+
+    if (!empty($config['scheduled_index']['enabled'])) {
+        $scheduler = $e['scheduler'];
+        $at = $config['scheduled_index']['at'] ?? '* * * * *';
+        $logs = $config['scheduled_index']['logs'] ?? '';
+        $job = $scheduler->addFunction('Grav\Plugin\TNTSearchPlugin::indexJob', [], 'tntsearch-index');
+        $job->at($at);
+        $job->output($logs);
+        $job->backlink('/plugins/tntsearch');
+    }
+}
+

Здесь вы можете увидеть, как некоторая соответствующая конфигурация планировщика получается из настроек конфигурации плагина TNTSearch, а затем создается новое Job с статической функцией, называемой indexJob().

\ No newline at end of file diff --git a/advanced/yaml/index.html b/advanced/yaml/index.html new file mode 100644 index 00000000..31fdbdea --- /dev/null +++ b/advanced/yaml/index.html @@ -0,0 +1,26 @@ + Синтаксис YAML - Документация Grav CMS на русском
Перейти к содержанию

Синтаксис YAML⚓︎

Введение⚓︎

YAML означает YAML Ain't Markup Language, и он широко используется в Grav для его файлов конфигурации, чертежей, а также в настройках страницы.

YAML для конфигурации - это то же самое, что Markdown для разметки. По сути, это формат структурированных данных, удобочитаемый человеком. Он менее сложен и неуклюж, чем XML или JSON, но предоставляет аналогичные возможности. По сути, это позволяет вам предоставлять мощные настройки конфигурации без необходимости изучать более сложный тип кода, такой как CSS, JavaScript и PHP.

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

По сути, данные, которые вы вводите в файл YAML, используются вместе с библиотекой для создания страниц, которые вы видите в Grav.

Основные правила YAML⚓︎

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

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

Основные типы данных⚓︎

YAML превосходно работает с сопоставлениями (хешами/словарями), последовательностями (массивами/списками) и скалярами (строками/числами). Хотя его можно использовать с большинством языков программирования, лучше всего он работает с языками, построенными на этих типах структур данных. Сюда входят: PHP, Python, Perl, JavaScript и Ruby.

Скаляры⚓︎

Скаляры — довольно простое понятие. Это строки и числа, из которых состоят данные на странице. Скаляр может быть логическим свойством, например Yes, целым числом (числом), например 5, или строкой текста, например предложением или заголовком вашего веб-сайта.

Скаляры в программировании часто называют переменными. Если бы вы составляли список типов животных, они бы были названы этими животными.

Большинство скаляров не заключены в кавычки, но если вы вводите строку, в которой используются знаки препинания и другие элементы, которые можно спутать с синтаксисом YAML (тире, двоеточия и т. д.), вы можете захотеть заключить эти данные в кавычки, используя одинарные ' или двойные " кавычки. Двойные кавычки позволяют использовать экранирование для представления символов ASCII и Unicode.

integer: 25
+string: "25"
+float: 25.0
+boolean: Yes
+

Слова true, false, null, ~ и даты имеют особое значение в YAML. Пожалуйста, укажите их в кавычках, если вы не хотите использовать их в качестве логического типа, типа null или типа datetime. То же самое и с номерами версий, они должны быть заключены в кавычки, чтобы отделить их от значений с плавающей запятой.

Последовательности⚓︎

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

- Cat
+- Dog
+- Goldfish
+

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

-
+ - Cat
+ - Dog
+ - Goldfish
+-
+ - Python
+ - Lion
+ - Tiger
+

Если вы хотите вложить свои последовательности ещё глубже, вам просто нужно добавить больше уровней.

-
+ -
+  - Cat
+  - Dog
+  - Goldfish
+

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

Сопоставления⚓︎

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

animal: pets
+

В этом примере значение pets сопоставляется с ключом animal. При использовании в сочетании с последовательностью вы можете увидеть, что начинаете составлять список pets. В следующем примере тире, используемое для обозначения каждого элемента, считается отступом, делая элементы строк дочерними, а линия сопоставления pets - родительскими.

pets:
+ - Cat
+ - Dog
+ - Goldfish
+

Ресурсы и дополнительная документация⚓︎

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

\ No newline at end of file diff --git a/assets/images/android-chrome-192x192.png b/assets/images/android-chrome-192x192.png new file mode 100644 index 00000000..960e10c4 Binary files /dev/null and b/assets/images/android-chrome-192x192.png differ diff --git a/assets/images/apple-touch-icon.png b/assets/images/apple-touch-icon.png new file mode 100644 index 00000000..d53f45ee Binary files /dev/null and b/assets/images/apple-touch-icon.png differ diff --git a/assets/images/browserconfig.xml b/assets/images/browserconfig.xml new file mode 100644 index 00000000..33c7d68a --- /dev/null +++ b/assets/images/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/assets/images/favicon-16x16.png b/assets/images/favicon-16x16.png new file mode 100644 index 00000000..35e4c9b9 Binary files /dev/null and b/assets/images/favicon-16x16.png differ diff --git a/assets/images/favicon-32x32.png b/assets/images/favicon-32x32.png new file mode 100644 index 00000000..ce728f8b Binary files /dev/null and b/assets/images/favicon-32x32.png differ diff --git a/assets/images/favicon.ico b/assets/images/favicon.ico new file mode 100644 index 00000000..9226f938 Binary files /dev/null and b/assets/images/favicon.ico differ diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 00000000..1cf13b9f Binary files /dev/null and b/assets/images/favicon.png differ diff --git a/assets/images/grav-logo.png b/assets/images/grav-logo.png new file mode 100644 index 00000000..90fc9445 Binary files /dev/null and b/assets/images/grav-logo.png differ diff --git a/assets/images/mstile-150x150.png b/assets/images/mstile-150x150.png new file mode 100644 index 00000000..607d2a0d Binary files /dev/null and b/assets/images/mstile-150x150.png differ diff --git a/assets/images/safari-pinned-tab.svg b/assets/images/safari-pinned-tab.svg new file mode 100644 index 00000000..bd19c818 --- /dev/null +++ b/assets/images/safari-pinned-tab.svg @@ -0,0 +1,18 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/assets/images/site.webmanifest b/assets/images/site.webmanifest new file mode 100644 index 00000000..b78977df --- /dev/null +++ b/assets/images/site.webmanifest @@ -0,0 +1,15 @@ +{ + "name": "Grav CMS Russian Docs", + "short_name": "Grav CMS Russian Docs", + "icons": [ + { + "src": "/assets/images/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "start_url": "https://grav-docs.ru", + "display": "standalone" +} diff --git a/assets/javascripts/bundle.bd41221c.min.js b/assets/javascripts/bundle.bd41221c.min.js new file mode 100644 index 00000000..70bcbf19 --- /dev/null +++ b/assets/javascripts/bundle.bd41221c.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var _i=Object.create;var br=Object.defineProperty;var Ai=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames,Ft=Object.getOwnPropertySymbols,ki=Object.getPrototypeOf,vr=Object.prototype.hasOwnProperty,eo=Object.prototype.propertyIsEnumerable;var Zr=(e,t,r)=>t in e?br(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,F=(e,t)=>{for(var r in t||(t={}))vr.call(t,r)&&Zr(e,r,t[r]);if(Ft)for(var r of Ft(t))eo.call(t,r)&&Zr(e,r,t[r]);return e};var to=(e,t)=>{var r={};for(var o in e)vr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Ft)for(var o of Ft(e))t.indexOf(o)<0&&eo.call(e,o)&&(r[o]=e[o]);return r};var gr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Hi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ci(t))!vr.call(e,n)&&n!==r&&br(e,n,{get:()=>t[n],enumerable:!(o=Ai(t,n))||o.enumerable});return e};var jt=(e,t,r)=>(r=e!=null?_i(ki(e)):{},Hi(t||!e||!e.__esModule?br(r,"default",{value:e,enumerable:!0}):r,e));var ro=(e,t,r)=>new Promise((o,n)=>{var i=c=>{try{a(r.next(c))}catch(p){n(p)}},s=c=>{try{a(r.throw(c))}catch(p){n(p)}},a=c=>c.done?o(c.value):Promise.resolve(c.value).then(i,s);a((r=r.apply(e,t)).next())});var no=gr((xr,oo)=>{(function(e,t){typeof xr=="object"&&typeof oo!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var o=!0,n=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(C){return!!(C&&C!==document&&C.nodeName!=="HTML"&&C.nodeName!=="BODY"&&"classList"in C&&"contains"in C.classList)}function c(C){var ct=C.type,Ne=C.tagName;return!!(Ne==="INPUT"&&s[ct]&&!C.readOnly||Ne==="TEXTAREA"&&!C.readOnly||C.isContentEditable)}function p(C){C.classList.contains("focus-visible")||(C.classList.add("focus-visible"),C.setAttribute("data-focus-visible-added",""))}function l(C){C.hasAttribute("data-focus-visible-added")&&(C.classList.remove("focus-visible"),C.removeAttribute("data-focus-visible-added"))}function f(C){C.metaKey||C.altKey||C.ctrlKey||(a(r.activeElement)&&p(r.activeElement),o=!0)}function u(C){o=!1}function h(C){a(C.target)&&(o||c(C.target))&&p(C.target)}function w(C){a(C.target)&&(C.target.classList.contains("focus-visible")||C.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(C.target))}function A(C){document.visibilityState==="hidden"&&(n&&(o=!0),Z())}function Z(){document.addEventListener("mousemove",J),document.addEventListener("mousedown",J),document.addEventListener("mouseup",J),document.addEventListener("pointermove",J),document.addEventListener("pointerdown",J),document.addEventListener("pointerup",J),document.addEventListener("touchmove",J),document.addEventListener("touchstart",J),document.addEventListener("touchend",J)}function te(){document.removeEventListener("mousemove",J),document.removeEventListener("mousedown",J),document.removeEventListener("mouseup",J),document.removeEventListener("pointermove",J),document.removeEventListener("pointerdown",J),document.removeEventListener("pointerup",J),document.removeEventListener("touchmove",J),document.removeEventListener("touchstart",J),document.removeEventListener("touchend",J)}function J(C){C.target.nodeName&&C.target.nodeName.toLowerCase()==="html"||(o=!1,te())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",A,!0),Z(),r.addEventListener("focus",h,!0),r.addEventListener("blur",w,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var zr=gr((kt,Vr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof kt=="object"&&typeof Vr=="object"?Vr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof kt=="object"?kt.ClipboardJS=r():t.ClipboardJS=r()})(kt,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Li}});var s=i(279),a=i.n(s),c=i(370),p=i.n(c),l=i(817),f=i.n(l);function u(D){try{return document.execCommand(D)}catch(M){return!1}}var h=function(M){var O=f()(M);return u("cut"),O},w=h;function A(D){var M=document.documentElement.getAttribute("dir")==="rtl",O=document.createElement("textarea");O.style.fontSize="12pt",O.style.border="0",O.style.padding="0",O.style.margin="0",O.style.position="absolute",O.style[M?"right":"left"]="-9999px";var I=window.pageYOffset||document.documentElement.scrollTop;return O.style.top="".concat(I,"px"),O.setAttribute("readonly",""),O.value=D,O}var Z=function(M,O){var I=A(M);O.container.appendChild(I);var W=f()(I);return u("copy"),I.remove(),W},te=function(M){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},I="";return typeof M=="string"?I=Z(M,O):M instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(M==null?void 0:M.type)?I=Z(M.value,O):(I=f()(M),u("copy")),I},J=te;function C(D){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?C=function(O){return typeof O}:C=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},C(D)}var ct=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=M.action,I=O===void 0?"copy":O,W=M.container,K=M.target,Ce=M.text;if(I!=="copy"&&I!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(K!==void 0)if(K&&C(K)==="object"&&K.nodeType===1){if(I==="copy"&&K.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(I==="cut"&&(K.hasAttribute("readonly")||K.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Ce)return J(Ce,{container:W});if(K)return I==="cut"?w(K):J(K,{container:W})},Ne=ct;function Pe(D){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Pe=function(O){return typeof O}:Pe=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},Pe(D)}function xi(D,M){if(!(D instanceof M))throw new TypeError("Cannot call a class as a function")}function Xr(D,M){for(var O=0;O0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof W.action=="function"?W.action:this.defaultAction,this.target=typeof W.target=="function"?W.target:this.defaultTarget,this.text=typeof W.text=="function"?W.text:this.defaultText,this.container=Pe(W.container)==="object"?W.container:document.body}},{key:"listenClick",value:function(W){var K=this;this.listener=p()(W,"click",function(Ce){return K.onClick(Ce)})}},{key:"onClick",value:function(W){var K=W.delegateTarget||W.currentTarget,Ce=this.action(K)||"copy",It=Ne({action:Ce,container:this.container,target:this.target(K),text:this.text(K)});this.emit(It?"success":"error",{action:Ce,text:It,trigger:K,clearSelection:function(){K&&K.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(W){return hr("action",W)}},{key:"defaultTarget",value:function(W){var K=hr("target",W);if(K)return document.querySelector(K)}},{key:"defaultText",value:function(W){return hr("text",W)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(W){var K=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return J(W,K)}},{key:"cut",value:function(W){return w(W)}},{key:"isSupported",value:function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],K=typeof W=="string"?[W]:W,Ce=!!document.queryCommandSupported;return K.forEach(function(It){Ce=Ce&&!!document.queryCommandSupported(It)}),Ce}}]),O}(a()),Li=Mi},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==n;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}o.exports=s},438:function(o,n,i){var s=i(828);function a(l,f,u,h,w){var A=p.apply(this,arguments);return l.addEventListener(u,A,w),{destroy:function(){l.removeEventListener(u,A,w)}}}function c(l,f,u,h,w){return typeof l.addEventListener=="function"?a.apply(null,arguments):typeof u=="function"?a.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(A){return a(A,f,u,h,w)}))}function p(l,f,u,h){return function(w){w.delegateTarget=s(w.target,f),w.delegateTarget&&h.call(l,w)}}o.exports=c},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(o,n,i){var s=i(879),a=i(438);function c(u,h,w){if(!u&&!h&&!w)throw new Error("Missing required arguments");if(!s.string(h))throw new TypeError("Second argument must be a String");if(!s.fn(w))throw new TypeError("Third argument must be a Function");if(s.node(u))return p(u,h,w);if(s.nodeList(u))return l(u,h,w);if(s.string(u))return f(u,h,w);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function p(u,h,w){return u.addEventListener(h,w),{destroy:function(){u.removeEventListener(h,w)}}}function l(u,h,w){return Array.prototype.forEach.call(u,function(A){A.addEventListener(h,w)}),{destroy:function(){Array.prototype.forEach.call(u,function(A){A.removeEventListener(h,w)})}}}function f(u,h,w){return a(document.body,u,h,w)}o.exports=c},817:function(o){function n(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),p=document.createRange();p.selectNodeContents(i),c.removeAllRanges(),c.addRange(p),s=c.toString()}return s}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function p(){c.off(i,p),s.apply(a,arguments)}return p._=s,this.on(i,p,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,p=a.length;for(c;c{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var Va=/["'&<>]/;qn.exports=za;function za(e){var t=""+e,r=Va.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(p[0]===6||p[0]===2)){r=0;continue}if(p[0]===3&&(!i||p[1]>i[0]&&p[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function V(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],s;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(s)throw s.error}}return i}function z(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||a(u,h)})})}function a(u,h){try{c(o[u](h))}catch(w){f(i[0][3],w)}}function c(u){u.value instanceof ot?Promise.resolve(u.value.v).then(p,l):f(i[0][2],u)}function p(u){a("next",u)}function l(u){a("throw",u)}function f(u,h){u(h),i.shift(),i.length&&a(i[0][0],i[0][1])}}function so(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof ue=="function"?ue(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),n(a,c,s.done,s.value)})}}function n(i,s,a,c){Promise.resolve(c).then(function(p){i({value:p,done:a})},s)}}function k(e){return typeof e=="function"}function pt(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var Wt=pt(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=ue(s),c=a.next();!c.done;c=a.next()){var p=c.value;p.remove(this)}}catch(A){t={error:A}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var l=this.initialTeardown;if(k(l))try{l()}catch(A){i=A instanceof Wt?A.errors:[A]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=ue(f),h=u.next();!h.done;h=u.next()){var w=h.value;try{co(w)}catch(A){i=i!=null?i:[],A instanceof Wt?i=z(z([],V(i)),V(A.errors)):i.push(A)}}}catch(A){o={error:A}}finally{try{h&&!h.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new Wt(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)co(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Er=Ie.EMPTY;function Dt(e){return e instanceof Ie||e&&"closed"in e&&k(e.remove)&&k(e.add)&&k(e.unsubscribe)}function co(e){k(e)?e():e.unsubscribe()}var ke={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var lt={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,s=n.isStopped,a=n.observers;return i||s?Er:(this.currentObservers=null,a.push(r),new Ie(function(){o.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,s=o.isStopped;n?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new j;return r.source=this,r},t.create=function(r,o){return new vo(r,o)},t}(j);var vo=function(e){se(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:Er},t}(v);var St={now:function(){return(St.delegate||Date).now()},delegate:void 0};var Ot=function(e){se(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=St);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,s=o._infiniteTimeWindow,a=o._timestampProvider,c=o._windowTime;n||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,s=n._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var s=r.actions;o!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==o&&(ut.cancelAnimationFrame(o),r._scheduled=void 0)},t}(zt);var yo=function(e){se(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(qt);var de=new yo(xo);var L=new j(function(e){return e.complete()});function Kt(e){return e&&k(e.schedule)}function _r(e){return e[e.length-1]}function Je(e){return k(_r(e))?e.pop():void 0}function Ae(e){return Kt(_r(e))?e.pop():void 0}function Qt(e,t){return typeof _r(e)=="number"?e.pop():t}var dt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Yt(e){return k(e==null?void 0:e.then)}function Bt(e){return k(e[ft])}function Gt(e){return Symbol.asyncIterator&&k(e==null?void 0:e[Symbol.asyncIterator])}function Jt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Di(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Xt=Di();function Zt(e){return k(e==null?void 0:e[Xt])}function er(e){return ao(this,arguments,function(){var r,o,n,i;return Ut(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,ot(r.read())];case 3:return o=s.sent(),n=o.value,i=o.done,i?[4,ot(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,ot(n)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function tr(e){return k(e==null?void 0:e.getReader)}function N(e){if(e instanceof j)return e;if(e!=null){if(Bt(e))return Ni(e);if(dt(e))return Vi(e);if(Yt(e))return zi(e);if(Gt(e))return Eo(e);if(Zt(e))return qi(e);if(tr(e))return Ki(e)}throw Jt(e)}function Ni(e){return new j(function(t){var r=e[ft]();if(k(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Vi(e){return new j(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?g(function(n,i){return e(n,i,o)}):ce,ye(1),r?Qe(t):jo(function(){return new or}))}}function $r(e){return e<=0?function(){return L}:x(function(t,r){var o=[];t.subscribe(S(r,function(n){o.push(n),e=2,!0))}function le(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new v}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(p){var l,f,u,h=0,w=!1,A=!1,Z=function(){f==null||f.unsubscribe(),f=void 0},te=function(){Z(),l=u=void 0,w=A=!1},J=function(){var C=l;te(),C==null||C.unsubscribe()};return x(function(C,ct){h++,!A&&!w&&Z();var Ne=u=u!=null?u:r();ct.add(function(){h--,h===0&&!A&&!w&&(f=Pr(J,c))}),Ne.subscribe(ct),!l&&h>0&&(l=new it({next:function(Pe){return Ne.next(Pe)},error:function(Pe){A=!0,Z(),f=Pr(te,n,Pe),Ne.error(Pe)},complete:function(){w=!0,Z(),f=Pr(te,s),Ne.complete()}}),N(C).subscribe(l))})(p)}}function Pr(e,t){for(var r=[],o=2;oe.next(document)),e}function R(e,t=document){return Array.from(t.querySelectorAll(e))}function P(e,t=document){let r=me(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function me(e,t=document){return t.querySelector(e)||void 0}function Re(){var e,t,r,o;return(o=(r=(t=(e=document.activeElement)==null?void 0:e.shadowRoot)==null?void 0:t.activeElement)!=null?r:document.activeElement)!=null?o:void 0}var la=T(d(document.body,"focusin"),d(document.body,"focusout")).pipe(be(1),q(void 0),m(()=>Re()||document.body),B(1));function vt(e){return la.pipe(m(t=>e.contains(t)),Y())}function Vo(e,t){return T(d(e,"mouseenter").pipe(m(()=>!0)),d(e,"mouseleave").pipe(m(()=>!1))).pipe(t?be(t):ce,q(!1))}function Ue(e){return{x:e.offsetLeft,y:e.offsetTop}}function zo(e){return T(d(window,"load"),d(window,"resize")).pipe(Me(0,de),m(()=>Ue(e)),q(Ue(e)))}function ir(e){return{x:e.scrollLeft,y:e.scrollTop}}function et(e){return T(d(e,"scroll"),d(window,"resize")).pipe(Me(0,de),m(()=>ir(e)),q(ir(e)))}function qo(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)qo(e,r)}function E(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)qo(o,n);return o}function ar(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function gt(e){let t=E("script",{src:e});return H(()=>(document.head.appendChild(t),T(d(t,"load"),d(t,"error").pipe(b(()=>Ar(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),_(()=>document.head.removeChild(t)),ye(1))))}var Ko=new v,ma=H(()=>typeof ResizeObserver=="undefined"?gt("https://unpkg.com/resize-observer-polyfill"):$(void 0)).pipe(m(()=>new ResizeObserver(e=>{for(let t of e)Ko.next(t)})),b(e=>T(qe,$(e)).pipe(_(()=>e.disconnect()))),B(1));function pe(e){return{width:e.offsetWidth,height:e.offsetHeight}}function Ee(e){return ma.pipe(y(t=>t.observe(e)),b(t=>Ko.pipe(g(({target:r})=>r===e),_(()=>t.unobserve(e)),m(()=>pe(e)))),q(pe(e)))}function xt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function sr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var Qo=new v,fa=H(()=>$(new IntersectionObserver(e=>{for(let t of e)Qo.next(t)},{threshold:0}))).pipe(b(e=>T(qe,$(e)).pipe(_(()=>e.disconnect()))),B(1));function yt(e){return fa.pipe(y(t=>t.observe(e)),b(t=>Qo.pipe(g(({target:r})=>r===e),_(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Yo(e,t=16){return et(e).pipe(m(({y:r})=>{let o=pe(e),n=xt(e);return r>=n.height-o.height-t}),Y())}var cr={drawer:P("[data-md-toggle=drawer]"),search:P("[data-md-toggle=search]")};function Bo(e){return cr[e].checked}function Be(e,t){cr[e].checked!==t&&cr[e].click()}function We(e){let t=cr[e];return d(t,"change").pipe(m(()=>t.checked),q(t.checked))}function ua(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function da(){return T(d(window,"compositionstart").pipe(m(()=>!0)),d(window,"compositionend").pipe(m(()=>!1))).pipe(q(!1))}function Go(){let e=d(window,"keydown").pipe(g(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:Bo("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),g(({mode:t,type:r})=>{if(t==="global"){let o=Re();if(typeof o!="undefined")return!ua(o,r)}return!0}),le());return da().pipe(b(t=>t?L:e))}function ve(){return new URL(location.href)}function st(e,t=!1){if(G("navigation.instant")&&!t){let r=E("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function Jo(){return new v}function Xo(){return location.hash.slice(1)}function Zo(e){let t=E("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function ha(e){return T(d(window,"hashchange"),e).pipe(m(Xo),q(Xo()),g(t=>t.length>0),B(1))}function en(e){return ha(e).pipe(m(t=>me(`[id="${t}"]`)),g(t=>typeof t!="undefined"))}function At(e){let t=matchMedia(e);return nr(r=>t.addListener(()=>r(t.matches))).pipe(q(t.matches))}function tn(){let e=matchMedia("print");return T(d(window,"beforeprint").pipe(m(()=>!0)),d(window,"afterprint").pipe(m(()=>!1))).pipe(q(e.matches))}function Ur(e,t){return e.pipe(b(r=>r?t():L))}function Wr(e,t){return new j(r=>{let o=new XMLHttpRequest;return o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network error"))}),o.addEventListener("abort",()=>{r.complete()}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{var i;if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let s=(i=o.getResponseHeader("Content-Length"))!=null?i:0;t.progress$.next(n.loaded/+s*100)}}),t.progress$.next(5)),o.send(),()=>o.abort()})}function De(e,t){return Wr(e,t).pipe(b(r=>r.text()),m(r=>JSON.parse(r)),B(1))}function rn(e,t){let r=new DOMParser;return Wr(e,t).pipe(b(o=>o.text()),m(o=>r.parseFromString(o,"text/html")),B(1))}function on(e,t){let r=new DOMParser;return Wr(e,t).pipe(b(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),B(1))}function nn(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function an(){return T(d(window,"scroll",{passive:!0}),d(window,"resize",{passive:!0})).pipe(m(nn),q(nn()))}function sn(){return{width:innerWidth,height:innerHeight}}function cn(){return d(window,"resize",{passive:!0}).pipe(m(sn),q(sn()))}function pn(){return Q([an(),cn()]).pipe(m(([e,t])=>({offset:e,size:t})),B(1))}function pr(e,{viewport$:t,header$:r}){let o=t.pipe(X("size")),n=Q([o,r]).pipe(m(()=>Ue(e)));return Q([r,t,n]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:p}])=>({offset:{x:s.x-c,y:s.y-p+i},size:a})))}function ba(e){return d(e,"message",t=>t.data)}function va(e){let t=new v;return t.subscribe(r=>e.postMessage(r)),t}function ln(e,t=new Worker(e)){let r=ba(t),o=va(t),n=new v;n.subscribe(o);let i=o.pipe(ee(),oe(!0));return n.pipe(ee(),$e(r.pipe(U(i))),le())}var ga=P("#__config"),Et=JSON.parse(ga.textContent);Et.base=`${new URL(Et.base,ve())}`;function we(){return Et}function G(e){return Et.features.includes(e)}function ge(e,t){return typeof t!="undefined"?Et.translations[e].replace("#",t.toString()):Et.translations[e]}function Te(e,t=document){return P(`[data-md-component=${e}]`,t)}function ne(e,t=document){return R(`[data-md-component=${e}]`,t)}function xa(e){let t=P(".md-typeset > :first-child",e);return d(t,"click",{once:!0}).pipe(m(()=>P(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function mn(e){if(!G("announce.dismiss")||!e.childElementCount)return L;if(!e.hidden){let t=P(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return H(()=>{let t=new v;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),xa(e).pipe(y(r=>t.next(r)),_(()=>t.complete()),m(r=>F({ref:e},r)))})}function ya(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function fn(e,t){let r=new v;return r.subscribe(({hidden:o})=>{e.hidden=o}),ya(e,t).pipe(y(o=>r.next(o)),_(()=>r.complete()),m(o=>F({ref:e},o)))}function Ct(e,t){return t==="inline"?E("div",{class:"md-tooltip md-tooltip--inline",id:e,role:"tooltip"},E("div",{class:"md-tooltip__inner md-typeset"})):E("div",{class:"md-tooltip",id:e,role:"tooltip"},E("div",{class:"md-tooltip__inner md-typeset"}))}function un(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return E("aside",{class:"md-annotation",tabIndex:0},Ct(t),E("a",{href:r,class:"md-annotation__index",tabIndex:-1},E("span",{"data-md-annotation-id":e})))}else return E("aside",{class:"md-annotation",tabIndex:0},Ct(t),E("span",{class:"md-annotation__index",tabIndex:-1},E("span",{"data-md-annotation-id":e})))}function dn(e){return E("button",{class:"md-clipboard md-icon",title:ge("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Dr(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(c=>!e.terms[c]).reduce((c,p)=>[...c,E("del",null,p)," "],[]).slice(0,-1),i=we(),s=new URL(e.location,i.base);G("search.highlight")&&s.searchParams.set("h",Object.entries(e.terms).filter(([,c])=>c).reduce((c,[p])=>`${c} ${p}`.trim(),""));let{tags:a}=we();return E("a",{href:`${s}`,class:"md-search-result__link",tabIndex:-1},E("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&E("div",{class:"md-search-result__icon md-icon"}),r>0&&E("h1",null,e.title),r<=0&&E("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&e.tags.map(c=>{let p=a?c in a?`md-tag-icon md-tag--${a[c]}`:"md-tag-icon":"";return E("span",{class:`md-tag ${p}`},c)}),o>0&&n.length>0&&E("p",{class:"md-search-result__terms"},ge("search.result.term.missing"),": ",...n)))}function hn(e){let t=e[0].score,r=[...e],o=we(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),s=r.findIndex(l=>l.scoreDr(l,1)),...c.length?[E("details",{class:"md-search-result__more"},E("summary",{tabIndex:-1},E("div",null,c.length>0&&c.length===1?ge("search.result.more.one"):ge("search.result.more.other",c.length))),...c.map(l=>Dr(l,1)))]:[]];return E("li",{class:"md-search-result__item"},p)}function bn(e){return E("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>E("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?ar(r):r)))}function Nr(e){let t=`tabbed-control tabbed-control--${e}`;return E("div",{class:t,hidden:!0},E("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function vn(e){return E("div",{class:"md-typeset__scrollwrap"},E("div",{class:"md-typeset__table"},e))}function Ea(e){let t=we(),r=new URL(`../${e.version}/`,t.base);return E("li",{class:"md-version__item"},E("a",{href:`${r}`,class:"md-version__link"},e.title))}function gn(e,t){return e=e.filter(r=>{var o;return!((o=r.properties)!=null&&o.hidden)}),E("div",{class:"md-version"},E("button",{class:"md-version__current","aria-label":ge("select.version")},t.title),E("ul",{class:"md-version__list"},e.map(Ea)))}var wa=0;function Ta(e,t){document.body.append(e);let{width:r}=pe(e);e.style.setProperty("--md-tooltip-width",`${r}px`),e.remove();let o=sr(t),n=typeof o!="undefined"?et(o):$({x:0,y:0}),i=T(vt(t),Vo(t)).pipe(Y());return Q([i,n]).pipe(m(([s,a])=>{let{x:c,y:p}=Ue(t),l=pe(t),f=t.closest("table");return f&&t.parentElement&&(c+=f.offsetLeft+t.parentElement.offsetLeft,p+=f.offsetTop+t.parentElement.offsetTop),{active:s,offset:{x:c-a.x+l.width/2-r/2,y:p-a.y+l.height+8}}}))}function Ge(e){let t=e.title;if(!t.length)return L;let r=`__tooltip_${wa++}`,o=Ct(r,"inline"),n=P(".md-typeset",o);return n.innerHTML=t,H(()=>{let i=new v;return i.subscribe({next({offset:s}){o.style.setProperty("--md-tooltip-x",`${s.x}px`),o.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){o.style.removeProperty("--md-tooltip-x"),o.style.removeProperty("--md-tooltip-y")}}),T(i.pipe(g(({active:s})=>s)),i.pipe(be(250),g(({active:s})=>!s))).subscribe({next({active:s}){s?(e.insertAdjacentElement("afterend",o),e.setAttribute("aria-describedby",r),e.removeAttribute("title")):(o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t))},complete(){o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t)}}),i.pipe(Me(16,de)).subscribe(({active:s})=>{o.classList.toggle("md-tooltip--active",s)}),i.pipe(_t(125,de),g(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:s})=>s)).subscribe({next(s){s?o.style.setProperty("--md-tooltip-0",`${-s}px`):o.style.removeProperty("--md-tooltip-0")},complete(){o.style.removeProperty("--md-tooltip-0")}}),Ta(o,e).pipe(y(s=>i.next(s)),_(()=>i.complete()),m(s=>F({ref:e},s)))}).pipe(ze(ie))}function Sa(e,t){let r=H(()=>Q([zo(e),et(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:s,height:a}=pe(e);return{x:o-i.x+s/2,y:n-i.y+a/2}}));return vt(e).pipe(b(o=>r.pipe(m(n=>({active:o,offset:n})),ye(+!o||1/0))))}function xn(e,t,{target$:r}){let[o,n]=Array.from(e.children);return H(()=>{let i=new v,s=i.pipe(ee(),oe(!0));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),yt(e).pipe(U(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),T(i.pipe(g(({active:a})=>a)),i.pipe(be(250),g(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe(Me(16,de)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(_t(125,de),g(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),d(n,"click").pipe(U(s),g(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>{a.stopPropagation(),a.preventDefault()}),d(n,"mousedown").pipe(U(s),ae(i)).subscribe(([a,{active:c}])=>{var p;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(p=Re())==null||p.blur()}}),r.pipe(U(s),g(a=>a===o),Ye(125)).subscribe(()=>e.focus()),Sa(e,t).pipe(y(a=>i.next(a)),_(()=>i.complete()),m(a=>F({ref:e},a)))})}function Oa(e){return e.tagName==="CODE"?R(".c, .c1, .cm",e):[e]}function Ma(e){let t=[];for(let r of Oa(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let p=i.splitText(s.index);i=p.splitText(a.length),t.push(p)}else{i.textContent=a,t.push(i);break}}}}return t}function yn(e,t){t.append(...Array.from(e.childNodes))}function lr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,s=new Map;for(let a of Ma(t)){let[,c]=a.textContent.match(/\((\d+)\)/);me(`:scope > li:nth-child(${c})`,e)&&(s.set(c,un(c,i)),a.replaceWith(s.get(c)))}return s.size===0?L:H(()=>{let a=new v,c=a.pipe(ee(),oe(!0)),p=[];for(let[l,f]of s)p.push([P(".md-typeset",f),P(`:scope > li:nth-child(${l})`,e)]);return o.pipe(U(c)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of p)l?yn(f,u):yn(u,f)}),T(...[...s].map(([,l])=>xn(l,t,{target$:r}))).pipe(_(()=>a.complete()),le())})}function En(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return En(t)}}function wn(e,t){return H(()=>{let r=En(e);return typeof r!="undefined"?lr(r,e,t):L})}var Tn=jt(zr());var La=0;function Sn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return Sn(t)}}function _a(e){return Ee(e).pipe(m(({width:t})=>({scrollable:xt(e).width>t})),X("scrollable"))}function On(e,t){let{matches:r}=matchMedia("(hover)"),o=H(()=>{let n=new v,i=n.pipe($r(1));n.subscribe(({scrollable:c})=>{c&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")});let s=[];if(Tn.default.isSupported()&&(e.closest(".copy")||G("content.code.copy")&&!e.closest(".no-copy"))){let c=e.closest("pre");c.id=`__code_${La++}`;let p=dn(c.id);c.insertBefore(p,e),G("content.tooltips")&&s.push(Ge(p))}let a=e.closest(".highlight");if(a instanceof HTMLElement){let c=Sn(a);if(typeof c!="undefined"&&(a.classList.contains("annotate")||G("content.code.annotate"))){let p=lr(c,e,t);s.push(Ee(a).pipe(U(i),m(({width:l,height:f})=>l&&f),Y(),b(l=>l?p:L)))}}return _a(e).pipe(y(c=>n.next(c)),_(()=>n.complete()),m(c=>F({ref:e},c)),$e(...s))});return G("content.lazy")?yt(e).pipe(g(n=>n),ye(1),b(()=>o)):o}function Aa(e,{target$:t,print$:r}){let o=!0;return T(t.pipe(m(n=>n.closest("details:not([open])")),g(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(g(n=>n||!o),y(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Mn(e,t){return H(()=>{let r=new v;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),Aa(e,t).pipe(y(o=>r.next(o)),_(()=>r.complete()),m(o=>F({ref:e},o)))})}var Ln=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel,.nodeLabel p{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var qr,ka=0;function Ha(){return typeof mermaid=="undefined"||mermaid instanceof Element?gt("https://unpkg.com/mermaid@10.7.0/dist/mermaid.min.js"):$(void 0)}function _n(e){return e.classList.remove("mermaid"),qr||(qr=Ha().pipe(y(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Ln,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),B(1))),qr.subscribe(()=>ro(this,null,function*(){e.classList.add("mermaid");let t=`__mermaid_${ka++}`,r=E("div",{class:"mermaid"}),o=e.textContent,{svg:n,fn:i}=yield mermaid.render(t,o),s=r.attachShadow({mode:"closed"});s.innerHTML=n,e.replaceWith(r),i==null||i(s)})),qr.pipe(m(()=>({ref:e})))}var An=E("table");function Cn(e){return e.replaceWith(An),An.replaceWith(vn(e)),$({ref:e})}function $a(e){let t=e.find(r=>r.checked)||e[0];return T(...e.map(r=>d(r,"change").pipe(m(()=>P(`label[for="${r.id}"]`))))).pipe(q(P(`label[for="${t.id}"]`)),m(r=>({active:r})))}function kn(e,{viewport$:t,target$:r}){let o=P(".tabbed-labels",e),n=R(":scope > input",e),i=Nr("prev");e.append(i);let s=Nr("next");return e.append(s),H(()=>{let a=new v,c=a.pipe(ee(),oe(!0));Q([a,Ee(e)]).pipe(U(c),Me(1,de)).subscribe({next([{active:p},l]){let f=Ue(p),{width:u}=pe(p);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let h=ir(o);(f.xh.x+l.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Q([et(o),Ee(o)]).pipe(U(c)).subscribe(([p,l])=>{let f=xt(o);i.hidden=p.x<16,s.hidden=p.x>f.width-l.width-16}),T(d(i,"click").pipe(m(()=>-1)),d(s,"click").pipe(m(()=>1))).pipe(U(c)).subscribe(p=>{let{width:l}=pe(o);o.scrollBy({left:l*p,behavior:"smooth"})}),r.pipe(U(c),g(p=>n.includes(p))).subscribe(p=>p.click()),o.classList.add("tabbed-labels--linked");for(let p of n){let l=P(`label[for="${p.id}"]`);l.replaceChildren(E("a",{href:`#${l.htmlFor}`,tabIndex:-1},...Array.from(l.childNodes))),d(l.firstElementChild,"click").pipe(U(c),g(f=>!(f.metaKey||f.ctrlKey)),y(f=>{f.preventDefault(),f.stopPropagation()})).subscribe(()=>{history.replaceState({},"",`#${l.htmlFor}`),l.click()})}return G("content.tabs.link")&&a.pipe(Le(1),ae(t)).subscribe(([{active:p},{offset:l}])=>{let f=p.innerText.trim();if(p.hasAttribute("data-md-switching"))p.removeAttribute("data-md-switching");else{let u=e.offsetTop-l.y;for(let w of R("[data-tabs]"))for(let A of R(":scope > input",w)){let Z=P(`label[for="${A.id}"]`);if(Z!==p&&Z.innerText.trim()===f){Z.setAttribute("data-md-switching",""),A.click();break}}window.scrollTo({top:e.offsetTop-u});let h=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...h])])}}),a.pipe(U(c)).subscribe(()=>{for(let p of R("audio, video",e))p.pause()}),$a(n).pipe(y(p=>a.next(p)),_(()=>a.complete()),m(p=>F({ref:e},p)))}).pipe(ze(ie))}function Hn(e,{viewport$:t,target$:r,print$:o}){return T(...R(".annotate:not(.highlight)",e).map(n=>wn(n,{target$:r,print$:o})),...R("pre:not(.mermaid) > code",e).map(n=>On(n,{target$:r,print$:o})),...R("pre.mermaid",e).map(n=>_n(n)),...R("table:not([class])",e).map(n=>Cn(n)),...R("details",e).map(n=>Mn(n,{target$:r,print$:o})),...R("[data-tabs]",e).map(n=>kn(n,{viewport$:t,target$:r})),...R("[title]",e).filter(()=>G("content.tooltips")).map(n=>Ge(n)))}function Ra(e,{alert$:t}){return t.pipe(b(r=>T($(!0),$(!1).pipe(Ye(2e3))).pipe(m(o=>({message:r,active:o})))))}function $n(e,t){let r=P(".md-typeset",e);return H(()=>{let o=new v;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),Ra(e,t).pipe(y(n=>o.next(n)),_(()=>o.complete()),m(n=>F({ref:e},n)))})}function Pa({viewport$:e}){if(!G("header.autohide"))return $(!1);let t=e.pipe(m(({offset:{y:n}})=>n),Ke(2,1),m(([n,i])=>[nMath.abs(i-n.y)>100),m(([,[n]])=>n),Y()),o=We("search");return Q([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),Y(),b(n=>n?r:$(!1)),q(!1))}function Rn(e,t){return H(()=>Q([Ee(e),Pa(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),Y((r,o)=>r.height===o.height&&r.hidden===o.hidden),B(1))}function Pn(e,{header$:t,main$:r}){return H(()=>{let o=new v,n=o.pipe(ee(),oe(!0));o.pipe(X("active"),je(t)).subscribe(([{active:s},{hidden:a}])=>{e.classList.toggle("md-header--shadow",s&&!a),e.hidden=a});let i=fe(R("[title]",e)).pipe(g(()=>G("content.tooltips")),re(s=>Ge(s)));return r.subscribe(o),t.pipe(U(n),m(s=>F({ref:e},s)),$e(i.pipe(U(n))))})}function Ia(e,{viewport$:t,header$:r}){return pr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=pe(e);return{active:o>=n}}),X("active"))}function In(e,t){return H(()=>{let r=new v;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=me(".md-content h1");return typeof o=="undefined"?L:Ia(o,t).pipe(y(n=>r.next(n)),_(()=>r.complete()),m(n=>F({ref:e},n)))})}function Fn(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),Y()),n=o.pipe(b(()=>Ee(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),X("bottom"))));return Q([o,n,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:p}}])=>(p=Math.max(0,p-Math.max(0,s-c,i)-Math.max(0,p+c-a)),{offset:s-i,height:p,active:s-i<=c})),Y((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function Fa(e){let t=__md_get("__palette")||{index:e.findIndex(o=>matchMedia(o.getAttribute("data-md-color-media")).matches)},r=Math.max(0,Math.min(t.index,e.length-1));return $(...e).pipe(re(o=>d(o,"change").pipe(m(()=>o))),q(e[r]),m(o=>({index:e.indexOf(o),color:{media:o.getAttribute("data-md-color-media"),scheme:o.getAttribute("data-md-color-scheme"),primary:o.getAttribute("data-md-color-primary"),accent:o.getAttribute("data-md-color-accent")}})),B(1))}function jn(e){let t=R("input",e),r=E("meta",{name:"theme-color"});document.head.appendChild(r);let o=E("meta",{name:"color-scheme"});document.head.appendChild(o);let n=At("(prefers-color-scheme: light)");return H(()=>{let i=new v;return i.subscribe(s=>{if(document.body.setAttribute("data-md-color-switching",""),s.color.media==="(prefers-color-scheme)"){let a=matchMedia("(prefers-color-scheme: light)"),c=document.querySelector(a.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");s.color.scheme=c.getAttribute("data-md-color-scheme"),s.color.primary=c.getAttribute("data-md-color-primary"),s.color.accent=c.getAttribute("data-md-color-accent")}for(let[a,c]of Object.entries(s.color))document.body.setAttribute(`data-md-color-${a}`,c);for(let a=0;a{let s=Te("header"),a=window.getComputedStyle(s);return o.content=a.colorScheme,a.backgroundColor.match(/\d+/g).map(c=>(+c).toString(16).padStart(2,"0")).join("")})).subscribe(s=>r.content=`#${s}`),i.pipe(Oe(ie)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")}),Fa(t).pipe(U(n.pipe(Le(1))),at(),y(s=>i.next(s)),_(()=>i.complete()),m(s=>F({ref:e},s)))})}function Un(e,{progress$:t}){return H(()=>{let r=new v;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(y(o=>r.next({value:o})),_(()=>r.complete()),m(o=>({ref:e,value:o})))})}var Kr=jt(zr());function ja(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function Wn({alert$:e}){Kr.default.isSupported()&&new j(t=>{new Kr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||ja(P(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(y(t=>{t.trigger.focus()}),m(()=>ge("clipboard.copied"))).subscribe(e)}function Dn(e,t){return e.protocol=t.protocol,e.hostname=t.hostname,e}function Ua(e,t){let r=new Map;for(let o of R("url",e)){let n=P("loc",o),i=[Dn(new URL(n.textContent),t)];r.set(`${i[0]}`,i);for(let s of R("[rel=alternate]",o)){let a=s.getAttribute("href");a!=null&&i.push(Dn(new URL(a),t))}}return r}function mr(e){return on(new URL("sitemap.xml",e)).pipe(m(t=>Ua(t,new URL(e))),he(()=>$(new Map)))}function Wa(e,t){if(!(e.target instanceof Element))return L;let r=e.target.closest("a");if(r===null)return L;if(r.target||e.metaKey||e.ctrlKey)return L;let o=new URL(r.href);return o.search=o.hash="",t.has(`${o}`)?(e.preventDefault(),$(new URL(r.href))):L}function Nn(e){let t=new Map;for(let r of R(":scope > *",e.head))t.set(r.outerHTML,r);return t}function Vn(e){for(let t of R("[href], [src]",e))for(let r of["href","src"]){let o=t.getAttribute(r);if(o&&!/^(?:[a-z]+:)?\/\//i.test(o)){t[r]=t[r];break}}return $(e)}function Da(e){for(let o of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...G("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let n=me(o),i=me(o,e);typeof n!="undefined"&&typeof i!="undefined"&&n.replaceWith(i)}let t=Nn(document);for(let[o,n]of Nn(e))t.has(o)?t.delete(o):document.head.appendChild(n);for(let o of t.values()){let n=o.getAttribute("name");n!=="theme-color"&&n!=="color-scheme"&&o.remove()}let r=Te("container");return Fe(R("script",r)).pipe(b(o=>{let n=e.createElement("script");if(o.src){for(let i of o.getAttributeNames())n.setAttribute(i,o.getAttribute(i));return o.replaceWith(n),new j(i=>{n.onload=()=>i.complete()})}else return n.textContent=o.textContent,o.replaceWith(n),L}),ee(),oe(document))}function zn({location$:e,viewport$:t,progress$:r}){let o=we();if(location.protocol==="file:")return L;let n=mr(o.base);$(document).subscribe(Vn);let i=d(document.body,"click").pipe(je(n),b(([c,p])=>Wa(c,p)),le()),s=d(window,"popstate").pipe(m(ve),le());i.pipe(ae(t)).subscribe(([c,{offset:p}])=>{history.replaceState(p,""),history.pushState(null,"",c)}),T(i,s).subscribe(e);let a=e.pipe(X("pathname"),b(c=>rn(c,{progress$:r}).pipe(he(()=>(st(c,!0),L)))),b(Vn),b(Da),le());return T(a.pipe(ae(e,(c,p)=>p)),e.pipe(X("pathname"),b(()=>e),X("hash")),e.pipe(Y((c,p)=>c.pathname===p.pathname&&c.hash===p.hash),b(()=>i),y(()=>history.back()))).subscribe(c=>{var p,l;history.state!==null||!c.hash?window.scrollTo(0,(l=(p=history.state)==null?void 0:p.y)!=null?l:0):(history.scrollRestoration="auto",Zo(c.hash),history.scrollRestoration="manual")}),e.subscribe(()=>{history.scrollRestoration="manual"}),d(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),t.pipe(X("offset"),be(100)).subscribe(({offset:c})=>{history.replaceState(c,"")}),a}var Qn=jt(Kn());function Yn(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,s)=>`${i}${s}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(0,Qn.default)(s).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function Ht(e){return e.type===1}function fr(e){return e.type===3}function Bn(e,t){let r=ln(e);return T($(location.protocol!=="file:"),We("search")).pipe(He(o=>o),b(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:G("search.suggest")}}})),r}function Gn({document$:e}){let t=we(),r=De(new URL("../versions.json",t.base)).pipe(he(()=>L)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:s,aliases:a})=>s===i||a.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),b(n=>d(document.body,"click").pipe(g(i=>!i.metaKey&&!i.ctrlKey),ae(o),b(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&n.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&n.get(c)===s?L:(i.preventDefault(),$(c))}}return L}),b(i=>{let{version:s}=n.get(i);return mr(new URL(i)).pipe(m(a=>{let p=ve().href.replace(t.base,"");return a.has(p.split("#")[0])?new URL(`../${s}/${p}`,t.base):new URL(i)}))})))).subscribe(n=>st(n,!0)),Q([r,o]).subscribe(([n,i])=>{P(".md-header__topic").appendChild(gn(n,i))}),e.pipe(b(()=>o)).subscribe(n=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let a=((s=t.version)==null?void 0:s.default)||"latest";Array.isArray(a)||(a=[a]);e:for(let c of a)for(let p of n.aliases.concat(n.version))if(new RegExp(c,"i").test(p)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let a of ne("outdated"))a.hidden=!1})}function Ka(e,{worker$:t}){let{searchParams:r}=ve();r.has("q")&&(Be("search",!0),e.value=r.get("q"),e.focus(),We("search").pipe(He(i=>!i)).subscribe(()=>{let i=ve();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=vt(e),n=T(t.pipe(He(Ht)),d(e,"keyup"),o).pipe(m(()=>e.value),Y());return Q([n,o]).pipe(m(([i,s])=>({value:i,focus:s})),B(1))}function Jn(e,{worker$:t}){let r=new v,o=r.pipe(ee(),oe(!0));Q([t.pipe(He(Ht)),r],(i,s)=>s).pipe(X("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(X("focus")).subscribe(({focus:i})=>{i&&Be("search",i)}),d(e.form,"reset").pipe(U(o)).subscribe(()=>e.focus());let n=P("header [for=__search]");return d(n,"click").subscribe(()=>e.focus()),Ka(e,{worker$:t}).pipe(y(i=>r.next(i)),_(()=>r.complete()),m(i=>F({ref:e},i)),B(1))}function Xn(e,{worker$:t,query$:r}){let o=new v,n=Yo(e.parentElement).pipe(g(Boolean)),i=e.parentElement,s=P(":scope > :first-child",e),a=P(":scope > :last-child",e);We("search").subscribe(l=>a.setAttribute("role",l?"list":"presentation")),o.pipe(ae(r),Ir(t.pipe(He(Ht)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:s.textContent=f.length?ge("search.result.none"):ge("search.result.placeholder");break;case 1:s.textContent=ge("search.result.one");break;default:let u=ar(l.length);s.textContent=ge("search.result.other",u)}});let c=o.pipe(y(()=>a.innerHTML=""),b(({items:l})=>T($(...l.slice(0,10)),$(...l.slice(10)).pipe(Ke(4),jr(n),b(([f])=>f)))),m(hn),le());return c.subscribe(l=>a.appendChild(l)),c.pipe(re(l=>{let f=me("details",l);return typeof f=="undefined"?L:d(f,"toggle").pipe(U(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(g(fr),m(({data:l})=>l)).pipe(y(l=>o.next(l)),_(()=>o.complete()),m(l=>F({ref:e},l)))}function Qa(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=ve();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function Zn(e,t){let r=new v,o=r.pipe(ee(),oe(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),d(e,"click").pipe(U(o)).subscribe(n=>n.preventDefault()),Qa(e,t).pipe(y(n=>r.next(n)),_(()=>r.complete()),m(n=>F({ref:e},n)))}function ei(e,{worker$:t,keyboard$:r}){let o=new v,n=Te("search-query"),i=T(d(n,"keydown"),d(n,"focus")).pipe(Oe(ie),m(()=>n.value),Y());return o.pipe(je(i),m(([{suggest:a},c])=>{let p=c.split(/([\s-]+)/);if(a!=null&&a.length&&p[p.length-1]){let l=a[a.length-1];l.startsWith(p[p.length-1])&&(p[p.length-1]=l)}else p.length=0;return p})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(g(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(g(fr),m(({data:a})=>a)).pipe(y(a=>o.next(a)),_(()=>o.complete()),m(()=>({ref:e})))}function ti(e,{index$:t,keyboard$:r}){let o=we();try{let n=Bn(o.search,t),i=Te("search-query",e),s=Te("search-result",e);d(e,"click").pipe(g(({target:c})=>c instanceof Element&&!!c.closest("a"))).subscribe(()=>Be("search",!1)),r.pipe(g(({mode:c})=>c==="search")).subscribe(c=>{let p=Re();switch(c.type){case"Enter":if(p===i){let l=new Map;for(let f of R(":first-child [href]",s)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,h])=>h-u);f.click()}c.claim()}break;case"Escape":case"Tab":Be("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof p=="undefined")i.focus();else{let l=[i,...R(":not(details) > [href], summary, details[open] [href]",s)],f=Math.max(0,(Math.max(0,l.indexOf(p))+l.length+(c.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}c.claim();break;default:i!==Re()&&i.focus()}}),r.pipe(g(({mode:c})=>c==="global")).subscribe(c=>{switch(c.type){case"f":case"s":case"/":i.focus(),i.select(),c.claim();break}});let a=Jn(i,{worker$:n});return T(a,Xn(s,{worker$:n,query$:a})).pipe($e(...ne("search-share",e).map(c=>Zn(c,{query$:a})),...ne("search-suggest",e).map(c=>ei(c,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,qe}}function ri(e,{index$:t,location$:r}){return Q([t,r.pipe(q(ve()),g(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>Yn(o.config)(n.searchParams.get("h"))),m(o=>{var s;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,p=o(c);p.length>c.length&&n.set(a,p)}for(let[a,c]of n){let{childNodes:p}=E("span",null,c);a.replaceWith(...Array.from(p))}return{ref:e,nodes:n}}))}function Ya(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return Q([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(n,Math.max(0,a-i))-n,{height:s,locked:a>=i+n})),Y((i,s)=>i.height===s.height&&i.locked===s.locked))}function Qr(e,o){var n=o,{header$:t}=n,r=to(n,["header$"]);let i=P(".md-sidebar__scrollwrap",e),{y:s}=Ue(i);return H(()=>{let a=new v,c=a.pipe(ee(),oe(!0)),p=a.pipe(Me(0,de));return p.pipe(ae(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),p.pipe(He()).subscribe(()=>{for(let l of R(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:h}=pe(f);f.scrollTo({top:u-h/2})}}}),fe(R("label[tabindex]",e)).pipe(re(l=>d(l,"click").pipe(Oe(ie),m(()=>l),U(c)))).subscribe(l=>{let f=P(`[id="${l.htmlFor}"]`);P(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),Ya(e,r).pipe(y(l=>a.next(l)),_(()=>a.complete()),m(l=>F({ref:e},l)))})}function oi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return Lt(De(`${r}/releases/latest`).pipe(he(()=>L),m(o=>({version:o.tag_name})),Qe({})),De(r).pipe(he(()=>L),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),Qe({}))).pipe(m(([o,n])=>F(F({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return De(r).pipe(m(o=>({repositories:o.public_repos})),Qe({}))}}function ni(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return De(r).pipe(he(()=>L),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),Qe({}))}function ii(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return oi(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return ni(r,o)}return L}var Ba;function Ga(e){return Ba||(Ba=H(()=>{let t=__md_get("__source",sessionStorage);if(t)return $(t);if(ne("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return L}return ii(e.href).pipe(y(o=>__md_set("__source",o,sessionStorage)))}).pipe(he(()=>L),g(t=>Object.keys(t).length>0),m(t=>({facts:t})),B(1)))}function ai(e){let t=P(":scope > :last-child",e);return H(()=>{let r=new v;return r.subscribe(({facts:o})=>{t.appendChild(bn(o)),t.classList.add("md-source__repository--active")}),Ga(e).pipe(y(o=>r.next(o)),_(()=>r.complete()),m(o=>F({ref:e},o)))})}function Ja(e,{viewport$:t,header$:r}){return Ee(document.body).pipe(b(()=>pr(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),X("hidden"))}function si(e,t){return H(()=>{let r=new v;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(G("navigation.tabs.sticky")?$({hidden:!1}):Ja(e,t)).pipe(y(o=>r.next(o)),_(()=>r.complete()),m(o=>F({ref:e},o)))})}function Xa(e,{viewport$:t,header$:r}){let o=new Map,n=R(".md-nav__link",e);for(let a of n){let c=decodeURIComponent(a.hash.substring(1)),p=me(`[id="${c}"]`);typeof p!="undefined"&&o.set(a,p)}let i=r.pipe(X("height"),m(({height:a})=>{let c=Te("main"),p=P(":scope > :first-child",c);return a+.8*(p.offsetTop-c.offsetTop)}),le());return Ee(document.body).pipe(X("height"),b(a=>H(()=>{let c=[];return $([...o].reduce((p,[l,f])=>{for(;c.length&&o.get(c[c.length-1]).tagName>=f.tagName;)c.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let h=f.offsetParent;for(;h;h=h.offsetParent)u+=h.offsetTop;return p.set([...c=[...c,l]].reverse(),u)},new Map))}).pipe(m(c=>new Map([...c].sort(([,p],[,l])=>p-l))),je(i),b(([c,p])=>t.pipe(Rr(([l,f],{offset:{y:u},size:h})=>{let w=u+h.height>=Math.floor(a.height);for(;f.length;){let[,A]=f[0];if(A-p=u&&!w)f=[l.pop(),...f];else break}return[l,f]},[[],[...c]]),Y((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([a,c])=>({prev:a.map(([p])=>p),next:c.map(([p])=>p)})),q({prev:[],next:[]}),Ke(2,1),m(([a,c])=>a.prev.length{let i=new v,s=i.pipe(ee(),oe(!0));if(i.subscribe(({prev:a,next:c})=>{for(let[p]of c)p.classList.remove("md-nav__link--passed"),p.classList.remove("md-nav__link--active");for(let[p,[l]]of a.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",p===a.length-1)}),G("toc.follow")){let a=T(t.pipe(be(1),m(()=>{})),t.pipe(be(250),m(()=>"smooth")));i.pipe(g(({prev:c})=>c.length>0),je(o.pipe(Oe(ie))),ae(a)).subscribe(([[{prev:c}],p])=>{let[l]=c[c.length-1];if(l.offsetHeight){let f=sr(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:h}=pe(f);f.scrollTo({top:u-h/2,behavior:p})}}})}return G("navigation.tracking")&&t.pipe(U(s),X("offset"),be(250),Le(1),U(n.pipe(Le(1))),at({delay:250}),ae(i)).subscribe(([,{prev:a}])=>{let c=ve(),p=a[a.length-1];if(p&&p.length){let[l]=p,{hash:f}=new URL(l.href);c.hash!==f&&(c.hash=f,history.replaceState({},"",`${c}`))}else c.hash="",history.replaceState({},"",`${c}`)}),Xa(e,{viewport$:t,header$:r}).pipe(y(a=>i.next(a)),_(()=>i.complete()),m(a=>F({ref:e},a)))})}function Za(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:s}})=>s),Ke(2,1),m(([s,a])=>s>a&&a>0),Y()),i=r.pipe(m(({active:s})=>s));return Q([i,n]).pipe(m(([s,a])=>!(s&&a)),Y(),U(o.pipe(Le(1))),oe(!0),at({delay:250}),m(s=>({hidden:s})))}function pi(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new v,s=i.pipe(ee(),oe(!0));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(U(s),X("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),d(e,"click").subscribe(a=>{a.preventDefault(),window.scrollTo({top:0})}),Za(e,{viewport$:t,main$:o,target$:n}).pipe(y(a=>i.next(a)),_(()=>i.complete()),m(a=>F({ref:e},a)))}function li({document$:e}){e.pipe(b(()=>R(".md-ellipsis")),re(t=>yt(t).pipe(U(e.pipe(Le(1))),g(r=>r),m(()=>t),ye(1))),g(t=>t.offsetWidth{let r=t.innerText,o=t.closest("a")||t;return o.title=r,Ge(o).pipe(U(e.pipe(Le(1))),_(()=>o.removeAttribute("title")))})).subscribe(),e.pipe(b(()=>R(".md-status")),re(t=>Ge(t))).subscribe()}function mi({document$:e,tablet$:t}){e.pipe(b(()=>R(".md-toggle--indeterminate")),y(r=>{r.indeterminate=!0,r.checked=!1}),re(r=>d(r,"change").pipe(Fr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ae(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function es(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function fi({document$:e}){e.pipe(b(()=>R("[data-md-scrollfix]")),y(t=>t.removeAttribute("data-md-scrollfix")),g(es),re(t=>d(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function ui({viewport$:e,tablet$:t}){Q([We("search"),t]).pipe(m(([r,o])=>r&&!o),b(r=>$(r).pipe(Ye(r?400:100))),ae(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function ts(){return location.protocol==="file:"?gt(`${new URL("search/search_index.js",Yr.base)}`).pipe(m(()=>__index),B(1)):De(new URL("search/search_index.json",Yr.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var rt=No(),Rt=Jo(),wt=en(Rt),Br=Go(),_e=pn(),ur=At("(min-width: 960px)"),hi=At("(min-width: 1220px)"),bi=tn(),Yr=we(),vi=document.forms.namedItem("search")?ts():qe,Gr=new v;Wn({alert$:Gr});var Jr=new v;G("navigation.instant")&&zn({location$:Rt,viewport$:_e,progress$:Jr}).subscribe(rt);var di;((di=Yr.version)==null?void 0:di.provider)==="mike"&&Gn({document$:rt});T(Rt,wt).pipe(Ye(125)).subscribe(()=>{Be("drawer",!1),Be("search",!1)});Br.pipe(g(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=me("link[rel=prev]");typeof t!="undefined"&&st(t);break;case"n":case".":let r=me("link[rel=next]");typeof r!="undefined"&&st(r);break;case"Enter":let o=Re();o instanceof HTMLLabelElement&&o.click()}});li({document$:rt});mi({document$:rt,tablet$:ur});fi({document$:rt});ui({viewport$:_e,tablet$:ur});var tt=Rn(Te("header"),{viewport$:_e}),$t=rt.pipe(m(()=>Te("main")),b(e=>Fn(e,{viewport$:_e,header$:tt})),B(1)),rs=T(...ne("consent").map(e=>fn(e,{target$:wt})),...ne("dialog").map(e=>$n(e,{alert$:Gr})),...ne("header").map(e=>Pn(e,{viewport$:_e,header$:tt,main$:$t})),...ne("palette").map(e=>jn(e)),...ne("progress").map(e=>Un(e,{progress$:Jr})),...ne("search").map(e=>ti(e,{index$:vi,keyboard$:Br})),...ne("source").map(e=>ai(e))),os=H(()=>T(...ne("announce").map(e=>mn(e)),...ne("content").map(e=>Hn(e,{viewport$:_e,target$:wt,print$:bi})),...ne("content").map(e=>G("search.highlight")?ri(e,{index$:vi,location$:Rt}):L),...ne("header-title").map(e=>In(e,{viewport$:_e,header$:tt})),...ne("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Ur(hi,()=>Qr(e,{viewport$:_e,header$:tt,main$:$t})):Ur(ur,()=>Qr(e,{viewport$:_e,header$:tt,main$:$t}))),...ne("tabs").map(e=>si(e,{viewport$:_e,header$:tt})),...ne("toc").map(e=>ci(e,{viewport$:_e,header$:tt,main$:$t,target$:wt})),...ne("top").map(e=>pi(e,{viewport$:_e,header$:tt,main$:$t,target$:wt})))),gi=rt.pipe(b(()=>os),$e(rs),B(1));gi.subscribe();window.document$=rt;window.location$=Rt;window.target$=wt;window.keyboard$=Br;window.viewport$=_e;window.tablet$=ur;window.screen$=hi;window.print$=bi;window.alert$=Gr;window.progress$=Jr;window.component$=gi;})(); +//# sourceMappingURL=bundle.bd41221c.min.js.map + diff --git a/assets/javascripts/bundle.bd41221c.min.js.map b/assets/javascripts/bundle.bd41221c.min.js.map new file mode 100644 index 00000000..1663daba --- /dev/null +++ b/assets/javascripts/bundle.bd41221c.min.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "src/templates/assets/javascripts/bundle.ts", "node_modules/rxjs/node_modules/tslib/tslib.es6.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/EmptyError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/throwIfEmpty.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/first.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/templates/assets/javascripts/browser/document/index.ts", "src/templates/assets/javascripts/browser/element/_/index.ts", "src/templates/assets/javascripts/browser/element/focus/index.ts", "src/templates/assets/javascripts/browser/element/hover/index.ts", "src/templates/assets/javascripts/browser/element/offset/_/index.ts", "src/templates/assets/javascripts/browser/element/offset/content/index.ts", "src/templates/assets/javascripts/utilities/h/index.ts", "src/templates/assets/javascripts/utilities/round/index.ts", "src/templates/assets/javascripts/browser/script/index.ts", "src/templates/assets/javascripts/browser/element/size/_/index.ts", "src/templates/assets/javascripts/browser/element/size/content/index.ts", "src/templates/assets/javascripts/browser/element/visibility/index.ts", "src/templates/assets/javascripts/browser/toggle/index.ts", "src/templates/assets/javascripts/browser/keyboard/index.ts", "src/templates/assets/javascripts/browser/location/_/index.ts", "src/templates/assets/javascripts/browser/location/hash/index.ts", "src/templates/assets/javascripts/browser/media/index.ts", "src/templates/assets/javascripts/browser/request/index.ts", "src/templates/assets/javascripts/browser/viewport/offset/index.ts", "src/templates/assets/javascripts/browser/viewport/size/index.ts", "src/templates/assets/javascripts/browser/viewport/_/index.ts", "src/templates/assets/javascripts/browser/viewport/at/index.ts", "src/templates/assets/javascripts/browser/worker/index.ts", "src/templates/assets/javascripts/_/index.ts", "src/templates/assets/javascripts/components/_/index.ts", "src/templates/assets/javascripts/components/announce/index.ts", "src/templates/assets/javascripts/components/consent/index.ts", "src/templates/assets/javascripts/templates/tooltip/index.tsx", "src/templates/assets/javascripts/templates/annotation/index.tsx", "src/templates/assets/javascripts/templates/clipboard/index.tsx", "src/templates/assets/javascripts/templates/search/index.tsx", "src/templates/assets/javascripts/templates/source/index.tsx", "src/templates/assets/javascripts/templates/tabbed/index.tsx", "src/templates/assets/javascripts/templates/table/index.tsx", "src/templates/assets/javascripts/templates/version/index.tsx", "src/templates/assets/javascripts/components/tooltip/index.ts", "src/templates/assets/javascripts/components/content/annotation/_/index.ts", "src/templates/assets/javascripts/components/content/annotation/list/index.ts", "src/templates/assets/javascripts/components/content/annotation/block/index.ts", "src/templates/assets/javascripts/components/content/code/_/index.ts", "src/templates/assets/javascripts/components/content/details/index.ts", "src/templates/assets/javascripts/components/content/mermaid/index.css", "src/templates/assets/javascripts/components/content/mermaid/index.ts", "src/templates/assets/javascripts/components/content/table/index.ts", "src/templates/assets/javascripts/components/content/tabs/index.ts", "src/templates/assets/javascripts/components/content/_/index.ts", "src/templates/assets/javascripts/components/dialog/index.ts", "src/templates/assets/javascripts/components/header/_/index.ts", "src/templates/assets/javascripts/components/header/title/index.ts", "src/templates/assets/javascripts/components/main/index.ts", "src/templates/assets/javascripts/components/palette/index.ts", "src/templates/assets/javascripts/components/progress/index.ts", "src/templates/assets/javascripts/integrations/clipboard/index.ts", "src/templates/assets/javascripts/integrations/sitemap/index.ts", "src/templates/assets/javascripts/integrations/instant/index.ts", "src/templates/assets/javascripts/integrations/search/highlighter/index.ts", "src/templates/assets/javascripts/integrations/search/worker/message/index.ts", "src/templates/assets/javascripts/integrations/search/worker/_/index.ts", "src/templates/assets/javascripts/integrations/version/index.ts", "src/templates/assets/javascripts/components/search/query/index.ts", "src/templates/assets/javascripts/components/search/result/index.ts", "src/templates/assets/javascripts/components/search/share/index.ts", "src/templates/assets/javascripts/components/search/suggest/index.ts", "src/templates/assets/javascripts/components/search/_/index.ts", "src/templates/assets/javascripts/components/search/highlight/index.ts", "src/templates/assets/javascripts/components/sidebar/index.ts", "src/templates/assets/javascripts/components/source/facts/github/index.ts", "src/templates/assets/javascripts/components/source/facts/gitlab/index.ts", "src/templates/assets/javascripts/components/source/facts/_/index.ts", "src/templates/assets/javascripts/components/source/_/index.ts", "src/templates/assets/javascripts/components/tabs/index.ts", "src/templates/assets/javascripts/components/toc/index.ts", "src/templates/assets/javascripts/components/top/index.ts", "src/templates/assets/javascripts/patches/ellipsis/index.ts", "src/templates/assets/javascripts/patches/indeterminate/index.ts", "src/templates/assets/javascripts/patches/scrollfix/index.ts", "src/templates/assets/javascripts/patches/scrolllock/index.ts", "src/templates/assets/javascripts/polyfills/index.ts"], + "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*\n * Copyright (c) 2016-2024 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"focus-visible\"\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getActiveElement,\n getOptionalElement,\n requestJSON,\n setLocation,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchScript,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountProgress,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantNavigation,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchEllipsis,\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Functions - @todo refactor\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch search index\n *\n * @returns Search index observable\n */\nfunction fetchSearchIndex(): Observable {\n if (location.protocol === \"file:\") {\n return watchScript(\n `${new URL(\"search/search_index.js\", config.base)}`\n )\n .pipe(\n // @ts-ignore - @todo fix typings\n map(() => __index),\n shareReplay(1)\n )\n } else {\n return requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget(location$)\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? fetchSearchIndex()\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up progress indicator */\nconst progress$ = new Subject()\n\n/* Set up instant navigation, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantNavigation({ location$, viewport$, progress$ })\n .subscribe(document$)\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"link[rel=prev]\")\n if (typeof prev !== \"undefined\")\n setLocation(prev)\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"link[rel=next]\")\n if (typeof next !== \"undefined\")\n setLocation(next)\n break\n\n /* Expand navigation, see https://bit.ly/3ZjG5io */\n case \"Enter\":\n const active = getActiveElement()\n if (active instanceof HTMLLabelElement)\n active.click()\n }\n })\n\n/* Set up patches */\npatchEllipsis({ document$ })\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Progress bar */\n ...getComponentElements(\"progress\")\n .map(el => mountProgress(el, { progress$ })),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, {\n viewport$, header$, main$, target$\n })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.progress$ = progress$ /* Progress indicator subject */\nwindow.component$ = component$ /* Component observable */\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification, subscriber: Subscriber) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification(value: T) {\n return createNotification('N', value, undefined) as NextNotification;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber | Observer; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber | Observer) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver implements Observer {\n constructor(private partialObserver: Partial>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber extends Subscriber {\n constructor(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification, subscriber: Subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity(x: T): T {\n return x;\n}\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction\n): UnaryFunction;\nexport function pipe(\n fn1: UnaryFunction,\n fn2: UnaryFunction,\n fn3: UnaryFunction,\n fn4: UnaryFunction,\n fn5: UnaryFunction,\n fn6: UnaryFunction,\n fn7: UnaryFunction,\n fn8: UnaryFunction,\n fn9: UnaryFunction,\n ...fns: UnaryFunction[]\n): UnaryFunction;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift(operator?: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction\n ): Observable;\n pipe(\n op1: OperatorFunction,\n op2: OperatorFunction,\n op3: OperatorFunction,\n op4: OperatorFunction,\n op5: OperatorFunction,\n op6: OperatorFunction,\n op7: OperatorFunction,\n op8: OperatorFunction,\n op9: OperatorFunction,\n ...operations: OperatorFunction[]\n ): Observable;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver(value: any): value is Observer {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber(value: any): value is Subscriber {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate(\n init: (liftedSource: Observable, subscriber: Subscriber) => (() => void) | void\n): OperatorFunction {\n return (source: Observable) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber, liftedSource: Observable) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber extends Subscriber {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n", "import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n schedule(callback: FrameRequestCallback): Subscription;\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n delegate:\n | {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n }\n | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n // Clear the cancel function. The request has been fulfilled, so\n // attempting to cancel the request upon unsubscription would be\n // pointless.\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel?.(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject extends Observable implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable: any = new Observable();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer,\n source?: Observable\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject extends Subject {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(handler: () => void, timeout?: number, ...args) {\n const { delegate } = intervalProvider;\n if (delegate?.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle as any);\n },\n delegate: undefined,\n};\n", "import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction extends Action {\n public id: TimerHandle | undefined;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n", "import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: TimerHandle | undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AnimationFrameAction extends AsyncAction {\n constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue has no remaining actions with the same async id,\n // cancel the requested animation frame and set the scheduled flag to\n // undefined so the next AnimationFrameAction will request its own.\n const { actions } = scheduler;\n if (id != null && actions[actions.length - 1]?.id !== id) {\n animationFrameProvider.cancelAnimationFrame(id as number);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n this._active = true;\n // The async id that effects a call to flush is stored in _scheduled.\n // Before executing an action, it's necessary to check the action's async\n // id to determine whether it's supposed to be executed in the current\n // flush.\n // Previous implementations of this method used a count to determine this,\n // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n // are removed from the actions array and that can shift actions that are\n // scheduled to be executed in a subsequent flush into positions at which\n // they are executed within the current flush.\n const flushId = this._scheduled;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n action = action || actions.shift()!;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n this._active = false;\n\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "export const isArrayLike = ((x: any): x is ArrayLike => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable(obj: any): obj is AsyncIterable {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator(readableStream: ReadableStreamLike): AsyncGenerator {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike(obj: any): obj is ReadableStreamLike {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an

Вы можете использовать параметр --all-yes (-y), чтобы пропустить любые запросы. Существующие ресурсы будут переопределены, а если они являются символическими ссылками, будут автоматически пропущены.

Команда update показывает список обновляемых ресурсов и работает аналогичноinstall.

Кроме того, вы можете ограничить обновления только определёнными ресурсами.

uninstall⚓︎

Команда uninstall удаляет установленную тему или плагин и очищает кэш. Поскольку Grav - это чисто файловая система, удаление темы или плагина означает физическое удаление папки.

Команда также определит, связан ли ресурс символически, и предложит вам, что делать.

Вы также можете удалить сразу несколько ресурсов, разделив ярлыки пробелом.

Вы можете использовать параметр --all-yes (-y), чтобы пропустить любые запросы. Если ресурс определяется как символическая ссылка, он будет автоматически пропущен.

self-upgrade⚓︎

self-upgrade (самообновление) позволяет вам обновить Grav до последней доступной версии. Если обновление не требуется, об этом будет сообщено в сообщении, в котором также будет указано, какая версия у вас установлена ​​в данный момент и когда выпуск был опубликован.

Настоятельно рекомендуется всегда делать резервную копию перед выполнением самостоятельного обновления (см. Создание резервной копии в разделе CLI).

Самостоятельное обновление обновляет только части вашего экземпляра Grav, такие как папка system/, папка vendor/, index.php и другие. Ваши папки user и images никогда не будут затронуты.

Важная информация для разработчиков⚓︎

Чертежи⚓︎

С введением GPM у нас теперь есть строгие правила в отношении допустимых чертежей. Независимо от того, разрабатываете ли вы theme или plugin, вы всегда должны убедиться, что секция blueprints отформатирована правильно.

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

Релизы⚓︎

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

Со своей стороны, всё, что вам нужно сделать, это убедиться, что вы обновили чертежи новой версией, отметили и выпустили новую версию. Репозиторий Grav сделает все остальное за вас, и как только ваш релиз будет выпущен, он станет доступен всем через веб-сайт Grav или через GPM.

Добавьте свой ресурс в репозиторий⚓︎

advanced/grav-development#themeplugin-release-process

Следуйте инструкциям в разделе Процесс выпуска темы/плагина.

Чтобы добавить ваш новый плагин/тему в репозиторий Grav, откройте Grav Issue на GitHub. Вы также можете использовать эту предварительно скомпилированную ссылку. Укажите свой репозиторий вместо user/repository.

Более подробная информация о том, что делает плагин/тема, приветствуется и может быть размещена в этом выпуске.

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

\ No newline at end of file diff --git a/cli-console/grav-cli-gpm/index.jpg b/cli-console/grav-cli-gpm/index.jpg new file mode 100644 index 00000000..af820e56 Binary files /dev/null and b/cli-console/grav-cli-gpm/index.jpg differ diff --git a/cli-console/grav-cli-gpm/info.jpg b/cli-console/grav-cli-gpm/info.jpg new file mode 100644 index 00000000..aba2fe34 Binary files /dev/null and b/cli-console/grav-cli-gpm/info.jpg differ diff --git a/cli-console/grav-cli-gpm/update-limit.jpg b/cli-console/grav-cli-gpm/update-limit.jpg new file mode 100644 index 00000000..104aebb7 Binary files /dev/null and b/cli-console/grav-cli-gpm/update-limit.jpg differ diff --git a/cli-console/grav-cli-gpm/update.jpg b/cli-console/grav-cli-gpm/update.jpg new file mode 100644 index 00000000..2a24cc60 Binary files /dev/null and b/cli-console/grav-cli-gpm/update.jpg differ diff --git a/cli-console/grav-cli-gpm/upgrade.jpg b/cli-console/grav-cli-gpm/upgrade.jpg new file mode 100644 index 00000000..240e6506 Binary files /dev/null and b/cli-console/grav-cli-gpm/upgrade.jpg differ diff --git a/cli-console/grav-cli-plugin/bin-plugin-login.png b/cli-console/grav-cli-plugin/bin-plugin-login.png new file mode 100644 index 00000000..f9a921d5 Binary files /dev/null and b/cli-console/grav-cli-plugin/bin-plugin-login.png differ diff --git a/cli-console/grav-cli-plugin/bin-plugin-newuser.png b/cli-console/grav-cli-plugin/bin-plugin-newuser.png new file mode 100644 index 00000000..be01b2f3 Binary files /dev/null and b/cli-console/grav-cli-plugin/bin-plugin-newuser.png differ diff --git a/cli-console/grav-cli-plugin/bin-plugin.png b/cli-console/grav-cli-plugin/bin-plugin.png new file mode 100644 index 00000000..b9b8ac00 Binary files /dev/null and b/cli-console/grav-cli-plugin/bin-plugin.png differ diff --git a/cli-console/grav-cli-plugin/grav-plugin-hello.png b/cli-console/grav-cli-plugin/grav-plugin-hello.png new file mode 100644 index 00000000..152f6d11 Binary files /dev/null and b/cli-console/grav-cli-plugin/grav-plugin-hello.png differ diff --git a/cli-console/grav-cli-plugin/index.html b/cli-console/grav-cli-plugin/index.html new file mode 100644 index 00000000..8693f0c7 --- /dev/null +++ b/cli-console/grav-cli-plugin/index.html @@ -0,0 +1,76 @@ + Команды плагинов - Документация Grav CMS на русском

Команды плагинов⚓︎

Плагины могут интегрироваться с CLI Grav bin/plugin и расширять функциональные возможности плагина через Терминал, выполняя определённые задачи.

Как объясняется в разделе Grav CLI, вам нужно использовать терминал, чтобы иметь возможность выполнять команды.

При запуске команды bin/plugin будут перечислены все плагины, обеспечивающие интеграцию CLI.

Первым параметром, передаваемым в bin/plugin, всегда является имя подключаемого модуля (т. е. error, login и т. д.). Второй вариант - это фактическая команда, которую предоставляет плагин.

В зависимости от реализации плагина могут быть и другие следующие варианты, и вы можете узнать больше о каждом из них, выполнив команду bin/plugin [slug] list.

Зарезервированные команды и параметры⚓︎

Есть некоторые зарезервированные commands и options, которые всегда доступны из любого плагина. Это также особенно важно помнить, если вы разработчик и хотите реализовать свои собственные задачи, потому что вы не сможете использовать какие-либо зарезервированные команды и параметры.

Команды
help Отображает справку по команде
list Список команд
Параметры
-h, --help Показать справочное сообщение
-q, --quiet Не выводить никаких сообщений
-v, --version Показать версию приложения
--ansi Принудительный вывод ANSI
--no-ansi Отключить вывод ANSI
-n, --no-interaction Не задавайте интерактивных вопросов
-v|vv|vvv, --verbose Увеличьте уровень детализации сообщений: 1 для обычного вывода, 2 для более подробного вывода и 3 для отладки

Как использовать интерфейс командной строки для плагинов⚓︎

Команды list и help очень полезны, когда вы ещё не знаете, как использовать интерфейс командной строки определенного плагина.

С помощью list вы можете получить доступ ко всем доступным командам и просмотреть краткое описание того, что каждая из них делает.

Вот пример с плагином login, когда мы запускаем команду bin/plugin login list.

Отсутствие указания какой-либо команды после того, как ярлык плагина автоматически переходит в list. Это означает, что bin/plugin [slug] list и bin/plugin [slug] являются эквивалентами.

Как видите, большинство параметров и команд соответствуют зарезервированному списку. Фактические команды, предлагаемые плагином входа в систему, - это add-user, new-user и newuser.

Как вы можете заметить, описание всех трех команд идентично. Это потому, что по выбору 3 команды абсолютно одинаковы. add-user и newuser фактически являются псевдонимами для new-user, что позволяет легко угадать команду, не зная и не запоминая её.

Теперь, когда мы знаем, что плагин входа в систему поставляется с командой new-user, нам нужно только узнать, как её использовать. Здесь появляется зарезервированная команда help. Запустим bin/plugin login help new-user.

Теперь у нас есть полное представление о команде new-user. Попробуем создать нового пользователя. Поскольку все параметры по определению являются необязательными, мы намеренно опускаем пароль (позже нас спросят об этом).

bin/plugin login newuser -u joeuser -e joeuser@grav.org -P b -N "Joe User" -t "Site Administrator"
+Creating new user
+
+Enter a password: *********
+Repeat the password: *********
+
+Success! User joeuser created.
+

Разработчикам: интеграция интерфейса командной строки в плагин⚓︎

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

Первое, что вам нужно сделать, это создать подпапку cli/ в корне вашего плагина. Эта папка будет обработана bin/plugin и просканирована на предмет классов команд.

CLI Grav основан на замечательном Symfony Console Component, и вы можете в значительной степени следить за их документацией для получения полной справки, есть только несколько важных вещей, которые следует учитывать.

  1. Имя файла класса стандартное. Он должен начинаться с заглавной буквы и заканчиваться ** Command.php **.
    • Hello.php: НЕПРАВИЛЬНО
    • helloworldCommand.php: НЕПРАВИЛЬНО
    • HelloworldCommand.php: ВЕРНО
    • HelloWorldCommand.php: ВЕРНО
  2. Вы всегда должны расширять ConsoleCommand, это предложит вам некоторые дополнительные возможности Grav, такие как форматированные цвета, прямой доступ к экземпляру Grav и другим утилитам (подробнее).
  3. Консоль Symfony требует метода execute. При расширении ConsoleCommand это становится serve.

Ниже приведен простой пример для начала. Вы можете протестировать его как есть, сохранив его как HelloCommand.php и поместив его в корневую папку вашего плагина cli/ (user/plugins/my_plugin/cli/HelloCommand.php).

<?php
+
+namespace Grav\Plugin\Console;
+
+use Grav\Console\ConsoleCommand;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputOption;
+
+/**
+ * Class HelloCommand
+ *
+ * @package Grav\Plugin\Console
+ */
+class HelloCommand extends ConsoleCommand
+{
+    /**
+     * @var array
+     */
+    protected $options = [];
+
+    /**
+     * Greets a person with or without yelling
+     */
+    protected function configure()
+    {
+        $this
+            ->setName("hello")
+            ->setDescription("Greets a person.")
+            ->addArgument(
+                'name',
+                InputArgument::REQUIRED,
+                'The name of the person that should be greeted'
+            )
+            ->addOption(
+                'yell',
+                'y',
+                InputOption::VALUE_NONE,
+                'Wheter the greetings should be yelled or quieter'
+            )
+            ->setHelp('The <info>hello</info> greets someone.')
+        ;
+    }
+
+    /**
+     * @return int|null|void
+     */
+    protected function serve()
+    {
+        // Collects the arguments and options as defined
+        $this->options = [
+            'name' => $this->input->getArgument('name'),
+            'yell' => $this->input->getOption('yell')
+        ];
+
+        // Prepare the strings we want to output and wraps the name into a cyan color
+        // More colors available at:
+        // https://github.com/getgrav/grav/blob/develop/system/src/Grav/Console/ConsoleTrait.php
+        $greetings = 'Greetings, dear <cyan>' . $this->options['name'] . '</cyan>!';
+
+        // If the optional `--yell` or `-y` parameter are passed in, let's convert everything to uppercase
+        if ($this->options['yell']) {
+            $greetings = strtoupper($greetings);
+        }
+
+        // finally we write to the output the greetings
+        $this->output->writeln($greetings);
+    }
+}
+

Ещё один хороший простой пример можно найти в плагине Error (LogCommand.php). Если вы ищете пример посложнее — посмотрите плагин Login (NewUserCommand.php)

\ No newline at end of file diff --git a/cli-console/grav-cli/index.html b/cli-console/grav-cli/index.html new file mode 100644 index 00000000..e832b6a7 --- /dev/null +++ b/cli-console/grav-cli/index.html @@ -0,0 +1,111 @@ + Команды Grav - Документация Grav CMS на русском

Команды Grav⚓︎

Grav поставляется со встроенным интерфейсом командной строки (CLI), который можно найти в разделе bin/grav. CLI чрезвычайно полезен для выполнения повторяющихся задач, таких как очистка кэша, создание резервных копий и многое другое.

Доступ к CLI — это простой процесс, но вам нужно использовать терминал. На mac это называется «терминал», на windows это называется «cmd», а на Linux это просто оболочка. Команды в стиле UNIX изначально недоступны в Windows cmd. Установка пакета Git SCM в Windows добавляет Git и Git BASH, который является альтернативой командной строке, делая доступными команды UNIX. Если вы получаете удаленный доступ к своему серверу, то, скорее всего, будете использовать SSH для удаленного входа на свой сервер. Посмотрите этот отличный учебник для получения дополнительной информации о SSH.

Хотя некоторые операции могут быть выполнены вручную, с помощью relying на CLI, эти задачи могут быть автоматизированы с помощью cronjobs, которые выполняются ежедневно.

Чтобы получить список всех команд, доступных в Grav, вы можете запустить команду:

bin/grav list
+

Это должно отображать что-то вроде:

Доступные команды:
+  backup       Создает резервную копию экземпляра Grav
+  cache        [clearcache|cache-clear] Очищает кэш
+  clean        Запустить очистку
+  composer     Обновляет зависимости поставщика composer, необходимые Grav.
+  help         Отображает справку по команде
+  install      Устанавливает зависимости Grav. При желании можно создать символические ссылки
+  list         Перечисляет команды
+  logviewer    Отображение последних записей журнала Grav
+  new-project  [newproject] Создает новый проект Grav со всеми установленными зависимостями
+  sandbox      Настройка базовой системы Grav в вашем webroot, хорошо подходит для разработки, игры или начала новой работы
+  scheduler    Запустить планировщик Grav. Лучше всего при интеграции с системой cron
+  security     Способен выполнять различные проверки безопасности
+

Чтобы получить справку для конкретной команды, вы можете добавить перед ней help:

bin/grav help install
+

Резервные копии⚓︎

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

Если Grav обнаруживает несколько профилей резервного копирования, команда CLI предложит вам выбрать тот, который вы хотите сохранить, с помощью команды CLI.

cd ~/workspace/portfolio
+bin/grav backup
+
+Grav Backup
+===========
+
+Choose a backup?
+  [0] Default Site Backup
+  [1] Pages Backup
+

В качестве альтернативы вы можете напрямую передать индекс профиля:

$ cd ~/workspace/portfolio
+bin/grav backup 1
+
+Archiving 36 files [===================================================] 100% < 1 sec Done...
+
+ [OK] Backup Successfully Created: /users/joe/workspace/portfolio/backup/pages_backup--20190227120510.zip
+

Более подробную информацию о функциях резервного копирования можно найти в разделе Дополнительно -> Резервные копии.

Очистка⚓︎

Эта команда CLI в основном используется в процессе сборки пакета, поскольку она удаляет из Grav посторонние файлы и папки. Настоятельно рекомендуется не использовать это самостоятельно, если вы не используете его для создания собственных пакетов Grav.

bin/grav clean
+

Очистка кэша⚓︎

Вы можете очистить кэш, удалив все файлы и папки в директории cache/.

Эквивалентная команда CLI:

$ cd ~/webroot/my-grav-project
+bin/grav cache
+

Существует несколько псевдонимов для совместимости ('cache,cache-clear,clearcache,clear').

По умолчанию используется стандартный процесс очистки кэша, однако вы можете дополнительно управлять им с помощью следующих параметров:

--purge           Если задано, удалит старый кэш
+--all             Если задано, удалит всё, включая скомпилированные файлы, twig, кэши doctrine
+--assets-only     Если задано, удалит только assets/*
+--images-only     Если задано, удалит только images/*
+--cache-only      Если задано, удалит только cache/*
+--tmp-only        Если задано, удалит только tmp/*
+

Composer⚓︎

Если вы установили Grav через GitHub и вручную установили пакеты поставщиков на основе composer, вы можете легко обновить их с помощью:

bin/grav composer
+

Вы также можете передать параметры композитора, такие как install:

bin/grav composer --install
+

или

bin/grav composer --update
+

Все они используют параметр Composer --no-dev, поэтому, чтобы иметь возможность выполнять тестирование, вы должны использовать композитор напрямую: bin/composer.phar

Install⚓︎

Чтобы установить зависимости, на которые полагается Grav (плагин errors, плагин errors, тема Antimatter), запустите терминал или консоль и перейдите в папку grav, где вы хотите установить зависимости и запустить команду CLI.

$ cd ~/webroot/my-grav-project
+bin/grav install
+

Теперь у вас должны быть установлены зависимости:

  • ~/webroot/my-grav-project/user/plugins/error
  • ~/webroot/my-grav-project/user/plugins/problems
  • ~/webroot/my-grav-project/user/themes/antimatter

Просмотр журнала⚓︎

В рамках Grav 1.6 была создана новая команда CLI logviewer, позволяющая быстро просматривать журналы Grav.

Самый простой способ использовать эту команду - просто набрать:

cd ~/webroot/my-grav-project
+bin/grav logviewer
+

Это выведет последние 20 записей журнала из файла logs/grav.log. Есть несколько вариантов:

-f, --file[=FILE]     расположение настраиваемого файла журнала (по умолчанию = grav.log)
+-l, --lines[=LINES]   количество строк (по умолчанию = 10)
+-v, --verbose         подробный вывод, включая трассировку стека, если она доступна
+

например

bin/grav logviewer --lines=4                                                                           [12:27:20]
+
+Log Viewer
+==========
+
+viewing last 4 entries in grav.log
+
+2019-02-27 12:00:30 [WARNING] Plugin 'foo-plugin' enabled but not found! Try clearing cache with `bin/grav cache`
+2019-02-27 12:04:57 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/default_site_backup--20190227120450.zip
+2019-02-27 12:05:10 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/pages_backup--20190227120510.zip
+2019-02-27 12:26:00 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/pages_backup--20190227122600.zip
+

И подробный вывод с трассировкой стека:

bin/grav logviewer -v                                                                                                       [16:12:12]
+
+Log Viewer
+==========
+
+viewing last 20 entries in grav.log
+
+2019-03-14 05:52:44 [WARNING] Plugin 'simplesearch.bak' enabled but not found! Try clearing cache with `bin/grav clear-cache`
+2019-03-14 05:52:44 [CRITICAL] A function must be an instance of \Twig_FunctionInterface or \Twig_SimpleFunction.
+0 /Users/joe/my-grav-project/plugins/acme-twig-filters/acme-twig-filters.php(52): Twig\Environment->addFunction(Object(Twig\TwigFilter))
+1 /Users/joe/my-grav-project/vendor/symfony/event-dispatcher/EventDispatcher.php(212): Grav\Plugin\ACMETwigFiltersPlugin->onTwigInitialized(Object(RocketTheme\Toolbox\Event\Event), 'onTwigInitializ...', Object(RocketTheme\Toolbox\Event\EventDispatcher))
+2 /Users/joe/my-grav-project/vendor/symfony/event-dispatcher/EventDispatcher.php(44): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'onTwigInitializ...', Object(RocketTheme\Toolbox\Event\Event))
+3 /Users/joe/my-grav-project/vendor/rockettheme/toolbox/Event/src/EventDispatcher.php(23): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('onTwigInitializ...', Object(RocketTheme\Toolbox\Event\Event))
+4 /Users/joe/my-grav-project/system/src/Grav/Common/Grav.php(365): RocketTheme\Toolbox\Event\EventDispatcher->dispatch('onTwigInitializ...', Object(RocketTheme\Toolbox\Event\Event))
+5 /Users/joe/my-grav-project/system/src/Grav/Common/Twig/Twig.php(175): Grav\Common\Grav->fireEvent('onTwigInitializ...')
+6 /Users/joe/my-grav-project/system/src/Grav/Common/Processors/TwigProcessor.php(24): Grav\Common\Twig\Twig->init()
+7 /Users/joe/my-grav-project/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php(45): Grav\Common\Processors\TwigProcessor->process(Object(Nyholm\Psr7\ServerRequest), Object(Grav\Framework\RequestHandler\RequestHandler))
+8 /Users/joe/my-grav-project/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php(57): Grav\Framework\RequestHandler\RequestHandler->handle(Object(Nyholm\Psr7\ServerRequest))
+9 /Users/joe/my-grav-project/system/src/Grav/Common/Processors/AssetsProcessor.php(28): Grav\Framework\RequestHandler\RequestHandler->handle(Object(Nyholm\Psr7\ServerRequest))
+
+2019-03-14 05:52:46 [WARNING] Plugin 'simplesearch.bak' enabled but not found! Try clearing cache with `bin/grav clear-cache`
+...
+

Новый проект⚓︎

Каждый раз, когда вы хотите начать новый проект с Grav, вам нужно начинать с чистого экземпляра Grav. Через интерфейс командной строки этот процесс очень прост и занимает всего несколько секунд.

  1. Запустите терминал или консоль и перейдите в папку grav (мы предполагаем, что она находится в папке ~/Projects/grav).
cd ~/Projects/grav
+
  1. Запустите GRAV CLI для создания нового проекта, причем конечным пунктом будет местоположение, в котором будет находиться ваш проект (обычно это webroot вашего веб-сервера). Предположим, что мы создаем портфолио и хотим получить его по адресу ~/Webroot/portfolio.
bin/grav new-project ~/webroot/portfolio
+

Это создаст новый экземпляр Grav и загрузит все необходимые зависимости.

Sandbox (песочница)⚓︎

Grav имеет отличную утилиту под названием sandbox, которая может быстро создать симлинковую копию текущей установки Grav. Проще говоря, запуск bin/grav sandbox-S DESTINATION — где «DESTINATION» — это путь к папке, в которую вы хотите скопировать установку — воссоздает установку Grav в другой папке.

Например, выполните:

bin/grav sandbox -s ../copy
+

Из текущей Grav-папки создается родственная папка с именем copy, где следующие папки являются виртуальными копиями: /bin, /system, /vendor, /webserver-configs, а также стандартные файлы, которые обычно находятся в корневой папке Grav. Все содержимое в /user будет копией под копирку, а не виртуальным, поэтому вы можете легко начать настройку новой установки, не создавая накладных расходов из основных файлов.

Планировщик⚓︎

Как описано в разделе Дополнительно -> Планировщик, планировщик можно контролировать с помощью команды CLI.

Базовая команда будет вручную запускать задачи планировщика, которые должны быть выполнены:

bin/grav scheduler
+

Чтобы получить более подробную информацию, вы можете запустить с помощью дополнительной опции -v :

bin/grav scheduler -v
+
+Running Scheduled Jobs
+======================
+
+[2019-02-27T12:34:07-07:00] Success: Grav\Common\Cache::purgeJob
+[2019-02-27T12:34:07-07:00] Success: Grav\Common\Cache::clearJob
+[2019-02-27T12:34:07-07:00] Success: ls -lah
+

Другие варианты включают в себя:

-i, --install         Показать команду установки
+-j, --jobs            Показать сводку заданий
+-d, --details         Показать детали заданий
+

Пожалуйста, обратитесь к разделу Advanced -> Scheduler для получения более подробной информации об этих параметрах.

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

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

bin/grav security                                                                                       [12:34:12]
+
+Grav Security Check
+===================
+
+Scanning 11 pages [===================================================] 100% < 1 sec
+
+[OK] Security Scan complete: No issues found...
+

Информация PHP CGI-FCGI⚓︎

Чтобы определить, работает ли на вашем сервере cgi-fcgi в командной строке, введите следующее:

$ php -v
+PHP 5.5.17 (cgi-fcgi) (built: Sep 19 2014 09:49:55)
+Copyright (c) 1997-2014 The PHP Group
+Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
+    with the ionCube PHP Loader v4.6.1, Copyright (c) 2002-2014, by ionCube Ltd.
+

Если вы видите ссылку на (cgi-fcgi), вам нужно будет поставить перед всеми командами bin/grav префикс php-cli. В качестве альтернативы вы можете настроить псевдоним в своей оболочке с помощью чего-то вроде: alias php="php-cli", который обеспечит запуск CLI версии PHP из командной строки.

\ No newline at end of file diff --git a/cli-console/scripted-upgrades/index.html b/cli-console/scripted-upgrades/index.html new file mode 100644 index 00000000..fbc49a75 --- /dev/null +++ b/cli-console/scripted-upgrades/index.html @@ -0,0 +1,83 @@ + Обновления по сценарию - Документация Grav CMS на русском

Обновления по сценарию⚓︎

Это руководство по упрощению обновления нескольких Grav-установок с помощью Deployer. Под несколькими подразумеваются отдельные установки, а не многосайтовая установка. Мы будем использовать путь к каждой установке для запуска команд CLI Grav, но без необходимости вводить каждую из них вручную.

Преимущество такого средства выполнения задач, как Deployer, заключается в том, что, выполняя свои задачи, он позволяет вам точно знать, что он делает в процессе. Он также покажет вам любой вывод сервера из выполняемых команд. Например, это результат работы Deployer:

Executing task packages
+
+GPM Releases Configuration: Stable
+
+Found 8 packages installed of which 1 need updating
+
+01. Email           [v2.5.2 -> v2.5.3]
+
+GPM Releases Configuration: Stable
+
+Preparing to install Email [v2.5.3]
+  |- Downloading package...   100%
+  |- Checking destination...  ok
+  |- Installing package...    ok
+  '- Success!
+
+Clearing cache
+
+Cleared:  /home/username/public_html/deployer/grav/cache/twig/*
+Cleared:  /home/username/public_html/deployer/grav/cache/doctrine/*
+Cleared:  /home/username/public_html/deployer/grav/cache/compiled/*
+
+Touched: /home/username/public_html/deployer/grav/user/config/system.yaml
+

И так просто: Deployer сказал Grav обновить все пакеты, что обновило плагин Email до последней версии.

Предварительные требования⚓︎

Как и в случае с Grav, вам потребуется PHP v7.3.6 или выше. Это также относится к командной строке (CLI), поэтому, если у вас установлено несколько версий, используйте ту, которая относится к нужной версии. Используйте команду php -v, чтобы проверить версию по умолчанию, моя - PHP 7.2.34.

В общих средах уточните у своего хоста, какую команду использовать для CLI. В моем случае это php74, которая с -v возвращает PHP 7.4.12. Это также означает добавление каждого пути следующим образом: php74 vendor/bin/dep list.

Некоторые хосты также позволяют вам выбрать версию PHP по умолчанию для использования в CLI. Уточните у своего хоста, как это сделать.

Установка⚓︎

В общедоступном корне вашего сервера (например, public_html или www) создайте папку с именем deployer и введите ее. Мы будем использовать это как основу для проекта. Вы захотите защитить этот каталог паролем (см. Руководство по DigitalOcean для ручного подхода или используйте CPanel, если доступно).

У вас должна быть рабочая установка Grav, а также Composer. На некоторых хостах уже установлен Composer, что вы можете проверить, запустив composer -v. Если он не установлен, вы можете установить его через SSH - из корневого каталога - со следующим:

export COMPOSERDIR=~/bin;mkdir bin
+curl -sS https://getcomposer.org/installer | php -- --install-dir=$COMPOSERDIR --filename=composer
+

Или, если вы предпочитаете локальную установку, выполните следующую команду в папке public_html/deployer/:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
+php composer-setup.php
+php -r "unlink('composer-setup.php');"
+

При локальной установке composer запускается через composer.phar, а не просто composer. Теперь, всё ещё находясь в папке public_html/deployer/, запустите следующее, чтобы установить Deployer:

composer require deployer/deployer
+

Теперь, всё ещё в той же папке, создайте файл с именем deploy.php. Мы будем использовать это для запуска каждой задачи с помощью Deployer. Скопируйте и вставьте в файл следующее:

<?php
+
+namespace Deployer;
+require 'vendor/autoload.php';
+
+// Configuration
+set('default_stage', 'production');
+set(php, 'php56');
+
+// Servers
+localServer('site1')
+    ->stage('production')
+    ->set('deploy_path', '/home/username/public_html/deployer/grav');
+
+desc('Backup Grav installations');
+task('backup', function () {
+    $backup = run('{{php}} bin/grav backup');
+    writeln($backup);
+});
+desc('Upgrade Grav Core');
+task('core', function () {
+    $self_upgrade = run('{{php}} bin/gpm self-upgrade -y');
+    writeln($self_upgrade);
+});
+desc('Upgrade Grav Packages');
+task('packages', function () {
+    $upgrade = run('{{php}} bin/gpm update -y');
+    writeln($upgrade);
+});
+?>
+

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

Поскольку для Deployer требуется явная промежуточная среда, мы устанавливаем её на production. Кроме того, чтобы разрешить конкретную версию php, мы устанавливаем исполняемый файл по умолчанию. Это может быть именованный исполняемый файл или путь к определенной версии PHP. Наша конфигурация теперь выглядит так:

<?php
+
+// Configuration
+set('default_stage', 'production');
+set(php, 'php56');
+

Если по умолчанию используется версия PHP CLI 5.6* или выше, вы измените её на set(php, 'php');.

Серверы⚓︎

Мы можем настроить столько серверов/сайтов, сколько нужно, скрипт будет запускаться для каждого из них по порядку. Они могут быть локальными или на внешних серверах, но поскольку это локальная установка, мы используем localServer (дополнительные настройки см. в главе Deployer / servers). Вот пример с несколькими сайтами:

<?php
+
+// Servers
+localServer('site1')
+    ->stage('production')
+    ->set('deploy_path', '/home/username/public_html/deployer/grav1');
+localServer('site2')
+    ->stage('production')
+    ->set('deploy_path', '/home/username/public_html/deployer/grav2');
+localServer('site3')
+    ->stage('production')
+    ->set('deploy_path', 'C:\caddy\grav1');
+localServer('site4')
+    ->stage('production')
+    ->set('deploy_path', 'C:\caddy\grav2');
+

Обратите внимание, что мы используем абсолютные пути к установкам, но они зависят от того, как путь интерпретируется SSH. Это означает, что на сервере нам нужен полный путь, потому что Deployer интерпретирует это правильно, но мы также можем использовать тильду, если установлен HOMEDIR, например: ~/public_html/deployer/grav1.

Задачи⚓︎

В настоящее время настроены три задачи: «резервное копирование», «ядро» и «пакеты». Запуск php vendor/bin/dep backup создает резервную копию каждой установки, доступную в deploy_path/backup/BACKUP.zip, где deploy_path - это пути, которые вы настроили для серверов.

Запуск php vendor/bin/dep core обновляет сам Grav и делает это с параметром --all-yes, чтобы пропустить все задаваемые вопросы типа «Да/Нет». То же самое применяется при запуске пакетов php vendor/bin/dep, которые обновляют все плагины и темы.

Вывод⚓︎

Теперь мы можем легко обновить все ваши определённые сайты, выполнив задачи по порядку. Сначала мы вводим папку public_html/deployer/, а затем выполняем каждую команду по мере необходимости:

php vendor/bin/dep backup
+php vendor/bin/dep core
+php vendor/bin/dep packages
+

Теперь мы сделаем резервную копию каждого сайта, обновим саму CMS, а также все плагины и темы.

\ No newline at end of file diff --git a/content/collections/index.html b/content/collections/index.html new file mode 100644 index 00000000..9afcf6ef --- /dev/null +++ b/content/collections/index.html @@ -0,0 +1,253 @@ + Коллекции страниц - Документация Grav CMS на русском

Коллекции страниц⚓︎

В Grav наиболее распространенным типом коллекции является список страниц, который может быть определён либо в блоке метаданных страницы, либо в самой Twig-разметке. Наиболее распространенным является определение коллекции в блоке метаданных. Если коллекция определена, она доступна в Twig страницы, чтобы делать с ней всё, что вы пожелаете. Используя методы коллекции страниц или циклически проходя через каждый объект страницы и используя методы или свойства страницы, вы можете делать мощные вещи. Распространенные примеры этого включают отображение списка записей в блоге или отображение модульных подстраниц для визуализации сложного дизайна страницы.

Объект коллекции⚓︎

Когда вы определяете коллекцию в заголовке страницы, вы динамически создаете коллекцию Grav, доступную в Twig страницы. Этот объект коллекции является итерабельным и может рассматриваться как массив, который позволяет вам делать такие вещи, как:

{{ dump(page.collection[page.path]) }}
+

Пример определения коллекции⚓︎

Пример коллекции, определенной в блоке метаданных страницы:

content:
+    items: '@self.children'
+    order:
+        by: date
+        dir: desc
+    limit: 10
+    pagination: true
+

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

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

Ссылки пагинации добавляются только в том случае, если установлен и включен плагин Pagination.

Доступ к коллекциям в Twig⚓︎

Когда эта коллекция определена в заголовке, Grav создает коллекцию page.collection, к которой можно получить доступ в шаблоне Twig:

{% for p in page.collection %}
+<h2>{{ p.title|e }}</h2>
+{{ p.summary|raw }}
+{% endfor %}
+

Это просто перебирает страницы в коллекции с отображением заголовка и резюме.

Вы также можете включить параметр порядка, чтобы изменить порядок страниц по умолчанию:

{% for p in page.collection.order('folder','asc') %}
+<h2>{{ p.title|e }}</h2>
+{{ p.summary|raw }}
+{% endfor %}
+

Заголовки коллекций⚓︎

Чтобы сообщить Grav, что определенная страница должна быть страницей списков и содержать дочерние страницы, есть ряд переменных, которые можно использовать:

Сводка параметров коллекции⚓︎

Строка Результат
'@root.pages' Получить страницы верхнего уровня
'@root.descendants' Получить все страницы сайта
'@root.all' Получить все страницы и модули сайта
'@self.page' Получить коллекцию только с текущей страницей
'@self.parent' Получить коллекцию только с родителем текущей страницы
'@self.siblings' Получить коллекцию всех страниц того же уровня, что и текущая
'@self.children' Получить коллекцию дочерних страниц текущей
'@self.modules' Получить коллекцию модулей текущей страницы
'@self.all' Получить коллекцию дочерних страниц и модулей текущей
'@self.descendants' Рекурсивно пройтись по всем дочерним страницам
'@page.page': '/fruit' Получить коллекцию только со страницей /fruit
'@page.parent': '/fruit' Получить коллекцию только с родительской страницей /fruit
'@page.siblings': '/fruit' Получить коллекцию всех страниц того же уровня, что и /fruit
'@page.children': '/fruit' Получить коллекцию дочерних страниц /fruit
'@page.modules': '/fruit' Получить коллекцию модулей страницы /fruit
'@page.all': '/fruit' Получить коллекцию дочерних страниц и модулей /fruit
'@page.descendants': '/fruit' Рекурсивно пройтись по всем дочерним страницам /fruit
'@taxonomy.tag': photography таксономия с tag=photography
'@taxonomy': {tag: birds, category: blog} таксономия с tag=birds и category=blog

Этот документ описывает использование @page, @taxonomy.category и т. д., но для YAML безопасней использовать альтернативный формат page@, taxonomy@.category. Все команды @ могут быть записаны либо в префиксном, либо в постфиксном формате.

В версии Grav 1.6 параметры коллекций были улучшены и изменены. Старые версии будут работать, но их не рекомендуется использовать.

Мы рассмотрим их более подробно.

Корневые коллекции⚓︎

@root - Потомки верхнего уровня⚓︎

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

content:
+    items: '@root.pages'
+

Также можно использовать псевдоним '@root.children'. Использование '@root' не рекомендуется, так как его значение может измениться в будущем.

@root.descendants - Все страницы⚓︎

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

content:
+    items: '@root.descendants'
+

@root.all - Все страницы и модули⚓︎

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

content:
+    items: '@root.all'
+

Самостоятельные коллекции⚓︎

@self.page - Только текущая страница⚓︎

Это вернет коллекцию, содержащую только текущую страницу.

content:
+    items: '@self.page'
+

Также можно использовать псевдоним '@self.self'.

Если страница не была опубликована, будет возвращена пустая коллекция.

@self.parent - Родительская страница текущей страницы⚓︎

Это особый случай коллекции, потому что он всегда будет возвращать только родителя текущей страницы:

content:
+    items: '@self.parent'
+

Если страница находится на верхнем уровне, будет возвращена пустая коллекция.

@self.siblings - Страницы того же уровня, что и текущая⚓︎

Эта коллекция будет собирать все опубликованные страницы на том же уровне текущей страницы, за исключением текущей:

content:
+    items: '@self.siblings'
+

@self.children - Дочерние страницы текущей⚓︎

Используется для перечисления опубликованных дочерних элементов текущей страницы:

content:
+    items: '@self.children'
+

Также можно использовать псевдоним '@self.pages'. Использование '@self' не рекомендуется, так как его значение может измениться в будущем.

@self.modules - Модули текущей страницы⚓︎

Этот метод извлекает только опубликованные модули текущей страницы. (_features, _showcase и т. д.):

content:
+    items: '@self.modules'
+

Использование псевдонима '@self.modular' устарело.

@self.all - Дочерние страницы и модули текущей страницы⚓︎

Этот метод извлекает только опубликованные дочерние элементы и модули текущей страницы:

content:
+    items: '@self.all'
+

@self.descendants - Дочерние страницы + все потомки текущей страницы⚓︎

Подобно .children, коллекция .descendants извлечет все опубликованные дочерние элементы, но вдобавок ещё и рекурсивно получит всех потомков:

content:
+    items: '@self.descendants'
+

Коллекции страниц⚓︎

@page.page - Коллекция с включением только указанной страницы⚓︎

Эта коллекция принимает в качестве аргумента служебный маршрут страницы и возвращает коллекцию, содержащую эту страницу (если это опубликованная страница):

content:
+    items:
+      '@page.page': '/blog'
+

Также можно использовать псевдоним '@page.self': '/blog'.

Если страница не была опубликована, будет возвращена пустая коллекция.

@page.parent - Родительская страница конкретной страницы⚓︎

Это особый случай коллекции, потому что он всегда будет возвращать только родителя текущей страницы:

content:
+    items:
+      '@page.parent': '/blog'
+

Если страница находится на верхнем уровне, будет возвращена пустая коллекция.

@page.siblings - Страницы того же уровня, что и указанная⚓︎

Эта коллекция соберет все опубликованные страницы на том же уровне, что и текущая, исключая её саму:

content:
+    items:
+        '@page.siblings': '/blog'
+

@page.children - Дочерние элементы указанной страницы⚓︎

Эта коллекция принимает в качестве аргумента служебный маршрут страницы и возвращает все опубликованные дочерние элементы этой страницы:

content:
+    items:
+      '@page.children': '/blog'
+

Также можно использовать псевдоним '@page.pages': '/blog'. Использование '@page': '/blog' не рекомендуется, так как его значение может измениться в будущем.

@page.modules - Модули указанной страницы⚓︎

Эта коллекция принимает в качестве аргумента служебный маршрут страницы и возвращает все опубликованные модули этой страницы:

content:
+    items:
+      '@page.modules': '/blog'
+

Использование псевдонима '@page.modular': '/blog' устарело.

@page.all - Дочерние элементы и модули указанной страницы⚓︎

Этот метод извлекает только опубликованные дочерние элементы и модули конкретной страницы:

content:
+    items:
+      '@page.all': '/blog'
+

@page.descendants - Коллекция дочерних элементов и всех потомков указанной страницы⚓︎

Эта коллекция принимает в качестве аргумента служебный маршрут страницы и возвращает все опубликованные дочерние элементы и всех потомков этой страницы:

content:
+    items:
+      '@page.descendants': '/blog'
+

Коллекции таксономии⚓︎

content:
+   items:
+      '@taxonomy.tag': foo
+

С опцией @taxonomy вы можете использовать мощную функциональность таксономии Grav. Именно здесь вступает в действие переменная taxonomy в файле конфигурации сайта. Должно быть определение для таксономии, определенной в этом файле конфигурации для Grav, чтобы интерпретировать ссылку на страницу как действительную.

Установив @taxonomy.tag: foo, Grav найдет все опубликованные страницы в папке /user/pages, имеющие tag: foo в своей переменной таксономии:

content:
+    items:
+       '@taxonomy.tag': [foo, bar]
+

Переменная content.items может принимать массив таксономий и собирать все страницы, удовлетворяющие этим правилам. Будут собраны опубликованные страницы, которые имеют как тег foo, так и тег bar. В главе Таксономия эта концепция рассмотрена более подробно.

Если вы хотите поместить несколько переменных в строку, вам нужно отделить подэлементы от их родителей с помощью угловых скобок {}. Затем вы можете разделить отдельные переменные на этом уровне запятой. Например: '@taxonomy': {category: [blog, featured], tag: [foo, bar]}. В этом примере суб-переменные category и tag помещаются в @taxonomy в иерархии, каждая из которых содержит перечисленные значения в квадратных скобках []. Страницы должны соответствовать всем этим требованиям.

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

content:
+  items:
+    '@taxonomy':
+      category: [blog, featured]
+      tag: [foo, bar]
+

На каждом уровне иерархии перед переменной добавляются два пробела. YAML позволит вам использовать столько пробелов, сколько вы хотите, но два - стандартная практика. В приведенном выше примере переменные category и tag установлены в @taxonomy.

Коллекции страниц будут автоматически отфильтрованы по таксономии, если она была указана в URL (например, /archive/category:news). Это позволяет создать один шаблон архива блога, но динамически фильтровать коллекцию с помощью URL. Если ваша коллекция страниц должна игнорировать таксономию, установленную в URL, используйте флаг url_taxonomy_filters: false, чтобы отключить эту функцию.

Сложные коллекции⚓︎

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

content:
+  items:
+    - '@self.children'
+    - '@taxonomy':
+         category: [blog, featured]
+

Кроме того, можно фильтровать коллекцию, используя filter: type: value. Тип может быть любым из следующих: published, visible, page, module, routable. Они соответствуют специфичным для коллекций методам, и вы можете использовать несколько из них для фильтрации вашей коллекции. Каждый из них может иметь значение true или false. Кроме того, существует type, который принимает одно имя-шаблона, types, которое принимает массив имен-шаблонов, и access, который принимает массив уровней доступа. Например:

 content:
+  items: '@self.siblings'
+  filter:
+    visible: true
+    type: 'blog'
+    access: ['site.login']
+

Тип также может быть отрицательным: non-published, non-visible, non-page (=module), non-module (=page) и non-routable, но лучше использовать положительную версию типа со значением false.

 content:
+  items: '@self.children'
+  filter:
+    published: false
+

Начиная с Grav 1.6 фильтры коллекций были упрощены. Прежние варианты (modular и non-modular) всё ещё будут работать, но их использование не рекомендуется. Используйте module и page вместо них.

Варианты сортировки⚓︎

content:
+    order:
+        by: date
+        dir: desc
+    limit: 5
+    pagination: true
+

Порядок подстраниц соответствует тем же правилам, что и порядок папок. Доступные опции:

Порядок Подробности
default Порядок зависит от файловой системе, например 01.home идет перед 02.advark
title Порядок зависит от названии, определенном на каждой странице
basename Порядок зависит от алфавитном имени папки после того, как она была обработана PHP-функцией basename()
date Порядок зависит от дате, определенной на каждой странице
modified Порядок зависит от времени изменения страницы
folder Порядок зависит от имени папки с любым числовым префиксом, например: 01.
header.x Порядок зависит от конкретном поле header страницы. Например, header.taxonomy.year. Кроме того, значение по умолчанию может быть добавлено через вертикальную черту. Например, header.taxonomy.year|2015
random Случайный порядок
custom Порядок зависит от переменной content.order.custom
manual Порядок зависит от переменной order_manual. УСТАРЕЛО
sort_flags Разрешить переопределение флагов сортировки для упорядочения на основе заголовка страницы или по умолчанию. Если загружено расширение PHP intl, то доступны только эти флаги. В противном случае вы можете использовать стандартные флаги сортировки PHP.

Переменнаяcontent.order.dir контролирует направление сортировки. Допустимые значения: desc или asc.

content:
+    order:
+        by: default
+        custom:
+            - _showcase
+            - _highlights
+            - _callout
+            - _features
+    limit: 5
+    pagination: true
+

В приведенной выше конфигурации вы можете видеть, что content.order.custom определяет пользовательский порядок для указания того, что на странице сначала идет витрина, затем секция основных моментов и т. д. Обратите внимание, что если страница не указана в списке пользовательской сортировки, то Grav возвращается к content.order.by для неуказанных страниц.

Если на странице есть настраиваемый ярлык, вы должны использовать его в списке content.order.custom.

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

Диапазон дат⚓︎

Существует также возможность фильтрации страниц по диапазону дат:

content:
+    items: '@self.children'
+    dateRange:
+        start: 1/1/2014
+        end: 1/1/2015
+

Вы можете использовать любой строковый формат даты, поддерживаемый strtotime(), например 6 weeks или last Monday, а также более традиционные даты, такие как 01/23/2014 или 23 января 2014. DateRange отфильтрует любые страницы, у которых есть дата за пределами предоставленного диапазона. Даты начала и конца являются необязательными, но следует указать хотя бы одну.

Несколько коллекций⚓︎

Когда вы создаете коллекцию с content: items: в вашем YAML, вы определяете одну коллекцию на основе нескольких условий. Однако Grav позволяет создавать произвольный набор коллекций на странице, вам просто нужно создать ещё одну:

content:
+    items: '@self.children'
+    order:
+        by: date
+        dir: desc
+    limit: 10
+    pagination: true
+
+fruit:
+    items:
+       '@taxonomy.tag': [fruit]
+

Это устанавливает 2 коллекции для этой страницы. Первая использует коллекцию по умолчанию content, а вторая определяет коллекцию на основе таксономии под названием fruit. Для доступа к этим двум коллекциям через Twig вы можете использовать следующий синтаксис:

{% set default_collection = page.collection %}
+{% set fruit_collection = page.collection('fruit') %}
+

Методы объекта коллекции⚓︎

Доступные итерируемые методы:

Параметр Описание
Collection::append($items) Добавить другую коллекцию или массив
Collection::first() Полуить первый элемент коллекции
Collection::last() Получить последний элемент коллекции
Collection::random($num) Получить $num случайных элементов коллекции
Collection::reverse() Обратный порядок коллекции
Collection::shuffle() Перемешать всю коллекцию
Collection::slice($offset, $length) Обрезать список

Также есть несколько полезных методов, специфичных для коллекции:

Параметр Описание
Collection::addPage($page) Можно добавить другую страницу в коллекцию
Collection::copy() Создать копию текущей коллекции
Collection::current() Получить текущий элемент коллекции
Collection::key() Получить слаг текущего элемента
Collection::remove($path) Удалить указанную страницу из коллекции, или текущую, если $path = null
Collection::order($by, $dir, $manual) Сортировка текущей коллекции
Collection::intersect($collection2) Объединить две коллекции, сохранив элементы, которые встречаются в обеих коллекциях (как условие "И")
Collection::merge($collection2) Объединить две коллекции, сохранив элементы, которые встречаются в любой коллекции (как условие "ИЛИ")
Collection::isFirst($path) Определить, является ли указанная страница первой
Collection::isLast($path) Определить, является ли указанная страница последней
Collection::prevSibling($path) Если возможно, возвращает предыдущую страницу того же уровня
Collection::nextSibling($path) Если возможно, возвращает следующую страницу того же уровня
Collection::currentPosition($path) Возвращает текущий индекс
Collection::dateRange($startDate, $endDate, $field) Фильтрует текущую коллекцию по датам
Collection::visible() Фильтрует текущую коллекцию, чтобы включить только видимые страницы
Collection::nonVisible() Фильтрует текущую коллекцию, чтобы включить только невидимые страницы
Collection::pages() Фильтрует текущую коллекцию, чтобы включить только страницы (но не модули)
Collection::modules() Фильтрует текущую коллекцию, чтобы включить только модули (но не страницы)
Collection::published() Фильтрует текущую коллекцию, чтобы включить только опубликованные страницы
Collection::nonPublished() Фильтрует текущую коллекцию для включения только неопубликованных страниц
Collection::routable() Фильтрует текущую коллекцию, чтобы включить только маршрутизируемые страницы
Collection::nonRoutable() Фильтрует текущую коллекцию, чтобы включить только немаршрутизируемые страницы
Collection::ofType($type) Отфильтровывает текущую коллекцию, чтобы включить только страницы с шаблоном = $type
Collection::ofOneOfTheseTypes($types) Фильтрует текущую коллекцию, чтобы включить только те страницы, где шаблон находится в массиве $types
Collection::ofOneOfTheseAccessLevels($levels) Фильтрует текущую коллекцию, чтобы включить только страницы, доступ к которым осуществляется в массиве $levels

Следующие методы устарели в Grav 1.7: Collection::modular() и Collection::nonModular(). Используйте Collection::modules() и Collection::pages() соответственно.

Вот пример из docs.html.twig темы Learn2, который определяет коллекцию на основе таксономии (и, возможно, тегов, если они существуют) и использует методы Collection::isFirst и Collection::isLast для навигации по страницам:

{% set tags = page.taxonomy.tag %}
+{% if tags %}
+    {% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs', 'tag': tags}},'order': {'by': 'default', 'dir': 'asc'}}) %}
+{% else %}
+    {% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs'}},'order': {'by': 'default', 'dir': 'asc'}}) %}
+{% endif %}
+
+{% block navigation %}
+        <div id="navigation">
+        {% if not progress.isFirst(page.path) %}
+            <a class="nav nav-prev" href="{{ progress.nextSibling(page.path).url|e }}"> <i class="fa fa-chevron-left"></i></a>
+        {% endif %}
+
+        {% if not progress.isLast(page.path) %}
+            <a class="nav nav-next" href="{{ progress.prevSibling(page.path).url|e }}"><i class="fa fa-chevron-right"></i></a>
+        {% endif %}
+        </div>
+{% endblock %}
+

nextSibling() — вверх по списку, prevSibling() — вниз по списку, вот как это работает:

Предположим, что у вас есть страницы:

Project A
+Project B
+Project C
+

Вы находитесь на странице «Проект A», предыдущая страница - это «Проект B». При переходе на страницу «Проект B» предыдущей станет «Проект C», а следующей — «Проект A».

Программные коллекции⚓︎

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

PHP-коллекции⚓︎

Вы можете выполнить расширенную логику сбора с помощью PHP, например:

<?php
+
+$collection = new Collection($pages);
+$collection->setParams(['taxonomies' => ['tag' => ['dog', 'cat']]])->dateRange('01/01/2016', '12/31/2016')->published()->ofType('blog-item')->order('date', 'desc');
+
+$titles = [];
+
+foreach ($collection as $page) {
+    $titles[] = $page->title();
+}
+

Функция order() может также, в дополнение к параметрам by и dir, принимать параметры manual и sort_flags. Это задокументировано выше. Вы также можете использовать тот же метод evaluate(), который используют коллекции страниц на основе блока метаданных:

<?php
+
+$page = Grav::instance()['page'];
+$collection = $page->evaluate(['@page.children' => '/blog', '@taxonomy.tag' => 'photography']);
+$ordered_collection = $collection->order('date', 'desc');
+

И ещё один пример индивидуальной сортировки:

<?php
+
+$ordered_collection = $collection->order('header.price','asc',null,SORT_NUMERIC);
+

Вы также можете сделать то же самое непосредственно в шаблонах Twig:

{% set collection = page.evaluate([{'@page.children':'/blog', '@taxonomy.tag':'photography'}]) %}
+{% set ordered_collection = collection.order('date','desc') %}
+

Расширенные коллекции⚓︎

По умолчанию, когда вы вызываете page.collection() в Twig страницы, имеющей коллекцию, определенную в заголовке, Grav ищет коллекцию с названием content. Это позволяет определять несколько коллекций, но вы можете пойти дальше.

Если вам нужно программно сгенерировать коллекцию, вы можете сделать это, вызвав page.collection() и передав массив в том же формате, что и определение коллекции заголовков страницы. Например:

{% set options = { items: {'@page.children': '/my/pages'}, 'limit': 5, 'order': {'by': 'date', 'dir': 'desc'}, 'pagination': true } %}
+{% set my_collection = page.collection(options) %}
+
+<ul>
+    {% for p in my_collection %}
+        <li>{{ p.title|e }}</li>
+    {% endfor %}
+</ul>
+

Генерация меню для всего сайта (вам необходимо установить свойство menu в блоке метаданных страницы):

---
+title: Home
+menu: Home
+---
+
{% set options = { items: {'@root.descendants':''}, 'order': {'by': 'folder', 'dir': 'asc'}} %}
+{% set my_collection = page.collection(options) %}
+
+{% for p in my_collection %}
+{% if p.header.menu %}
+    <ul>
+    {% if page.slug == p.slug %}
+        <li class="{{ p.slug|e }} active"><span>{{ p.menu|e }}</span></li>
+    {% else %}
+        <li class="{{ p.slug|e }}"><a href="{{ p.url|e }}">{{ p.menu|e }}</a></li>
+    {% endif %}
+    </ul>
+{% endif %}
+{% endfor %}
+

Пагинация с расширенными коллекциями⚓︎

Часто мы слышим вопрос о том, как включить разбиение на страницы для пользовательских коллекций. Пагинация - это плагин pagination, который можно установить через GPM. После установки он работает «из коробки» с коллекциями, настроенными на странице, но ничего не знает о пользовательских коллекциях, созданных в Twig. Чтобы упростить этот процесс, разбиение на страницы поставляется с собственной функцией Twig, называемой paginate(), которая обеспечит необходимую функциональность разбивки на страницы.

После того, как мы передаем коллекцию и ограничение функции paginate(), нам также необходимо передать информацию о разбиении на страницы непосредственно в шаблон partials/pagination.html.twig для правильного отображения.

{% set options = { items: {'@root.descendants':''}, 'order': {'by': 'folder', 'dir': 'asc'}} %}
+{% set my_collection = page.collection(options) %}
+{% do paginate( my_collection, 5 ) %}
+
+{% for p in my_collection %}
+    <ul>
+        {% if page.slug == p.slug %}
+            <li class="{{ p.slug|e }} active"><span>{{ p.menu|e }}</span></li>
+        {% else %}
+            <li class="{{ p.slug|e }}"><a href="{{ p.url|e }}">{{ p.menu|e }}</a></li>
+        {% endif %}
+    </ul>
+{% endfor %}
+
+{% include 'partials/pagination.html.twig' with {'base_url':page.url, 'pagination':my_collection.params.pagination} %}
+

Пользовательская обработка коллекции с событием onCollectionProcessed()⚓︎

Бывают случаи, когда вариантов событий просто недостаточно. Когда вы хотите получить коллекцию, но затем продолжите манипулировать коллекцией на основе чего-то очень нестандартного. Представьте себе, если хотите, вариант использования, в котором у вас есть то, что кажется довольно стандартным списком блогов, но ваш клиент хочет иметь точный контроль над тем, что отображается в списке. Они хотят иметь настраиваемый переключатель для каждого элемента блога, который позволяет им удалить его из списка, но при этом опубликовать его и получить по прямой ссылке.

Чтобы это произошло, мы можем просто добавить настраиваемую опцию display_in_listing: false в заголовок страницы для элемента:

---
+title: 'My Story'
+date: '13:34 04/14/2020'
+taxonomy:
+    tag:
+        - journal
+display_in_listing: false
+---
+...
+

Проблема в том, что нет способа определить или включить этот фильтр при определении коллекции на странице листинга. Вероятно, это определяется примерно так:

---
+menu: News
+title: 'My Blog'
+content:
+    items:
+        - self@.children
+    order:
+        by: date
+        dir: desc
+    limit: 8
+    pagination: true
+    url_taxonomy_filters: true
+---
+...
+

Таким образом, коллекция просто определяется директивой self@.chidren для получения всех опубликованных дочерних элементов текущей страницы. Так что насчет тех страниц, у которых установлен параметр display_in_listing: false? Нам нужно проделать дополнительную работу с этой коллекцией, прежде чем она будет возвращена, чтобы убедиться, что мы удалим все элементы, которые мы не хотим видеть. Для этого мы можем использовать событие onCollectionProcessed() в настраиваемом плагине. Нам нужно добавить слушателя:

<?php
+
+    public static function getSubscribedEvents(): array
+    {
+        return [
+            ['autoload', 100000],
+            'onPluginsInitialized' => ['onPluginsInitialized', 0],
+            'onCollectionProcessed' => ['onCollectionProcessed', 10]
+        ];
+    }
+

Затем нам нужно определить метод и перебрать элементы коллекции, ища любые страницы с этим набором полей display_in_listing:, а затем удалить его, если он равен false:

<?php
+
+    /**
+     * Remove any page from collection with display_in_listing: false|0
+     *
+     * @param Event $event
+     */
+    public function onCollectionProcessed(Event $event): void
+    {
+        /** @var Collection $collection */
+        $collection = $event['collection'];
+
+        foreach ($collection as $item) {
+            $display_in_listing = $item->header()->display_in_listing ?? true;
+            if ((bool) $display_in_listing === false) {
+                $collection->remove($item->path());
+            }
+        }
+
+    }
+

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

\ No newline at end of file diff --git a/content/content-pages/content-listing.png b/content/content-pages/content-listing.png new file mode 100644 index 00000000..4b99b247 Binary files /dev/null and b/content/content-pages/content-listing.png differ diff --git a/content/content-pages/content-modular.png b/content/content-pages/content-modular.png new file mode 100644 index 00000000..86510871 Binary files /dev/null and b/content/content-pages/content-modular.png differ diff --git a/content/content-pages/content-standard.png b/content/content-pages/content-standard.png new file mode 100644 index 00000000..a00b6a97 Binary files /dev/null and b/content/content-pages/content-standard.png differ diff --git a/content/content-pages/index.html b/content/content-pages/index.html new file mode 100644 index 00000000..6e036fd7 --- /dev/null +++ b/content/content-pages/index.html @@ -0,0 +1,51 @@ + Страницы - Документация Grav CMS на русском

Страницы⚓︎

Страницы в Grav являются фундаментальными строительными блоками вашего сайта. Они содержат контент и обеспечивают навигацию в системе Grav.

Комбинация контента и навигации гарантирует, что система интуитивно понятна в использовании даже для самых неопытных авторов. Однако эта система в сочетании с мощными возможностями таксономии по-прежнему достаточно мощна для обработки сложных требований к контенту.

Grav изначально поддерживает 3 типа страниц, которые позволяют создавать сайты, богатые веб-контентом. Перечислим эти типы:

Типы страниц Grav

Обычная страница⚓︎

Обычная страница

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

При скачивании и установке пакета Grav core вас приветствует стандартная страница. Создание простой страницы мы подробно рассматриваем в Кратком руководстве.

Листинг⚓︎

Листинг

Это расширение обычной страницы. Это страница, имеющая ссылку на коллекцию страниц.

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

Также существуют такие параметры конфигурации, как управление порядком списка страниц, ограничение на количество элементов, и пагинация.

Пример каркаса блога, использующего листинг, можно найти на странице загрузок Grav.

Модульная страница⚓︎

Модульная страница

Модульная страница — особый тип страницы-списка, поскольку каждая модульная страница строится из дочерних модульных подстраниц. Это позволяет создавать очень сложные одностраничные макеты из модулей. Это достигается путем построения модульной страницы из нескольких модульных папок подстраниц, найденных в основной папке модульной страницы.

Пример каркаса одностраничника, использующего модульную страницу, можно найти на странице загрузок Grav.

Каждый из этих типов страниц следует одной и той же базовой структуре, поэтому, прежде чем мы сможем перейти к деталям каждого типа, мы должны объяснить, как строятся страницы в Grav.

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

Папки⚓︎

Весь контент сайта находится в директории /user/pages. Каждая страница должна быть расположена в своей собственной папке.

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

Grav понимает, что любое целочисленное значение, за которым следует точка, будет предназначено исключительно для упорядочивания, и удаляется внутри системы. Например, если у вас есть папка с именем 01.home, Grav будет обрабатывать эту папку как home, но будет гарантировать, что с упорядочением по умолчанию, она идет раньше 02.blog (в меню и в иных подобных структурах).

/user
+└── /pages
+    ├── /01.home
+    │   ├── /_header
+    │   ├── /_features
+    │   ├── /_body
+    ├── /02.blog
+    │   ├── /blog-item-1
+    │   ├── /blog-item-2
+    │   ├── /blog-item-3
+    │   ├── /blog-item-4
+    │   └── /blog-item-5
+    ├── /03.about-us
+    └── /error
+

Ваш сайт должен иметь точку входа, чтобы браузер отображал соответствующую страницу при переходе на главную страницу. Например, при переходе по адресу http://yoursite.com Grav ожидает отображения ресурса с алиасом home/, но вы можете переопределить это поведение, изменив настройку home.alias в файле конфигурации.

Модульные подстраницы обозначаются подчеркиванием (_) перед именем папки. Это специальный тип папки, который предназначен для использования только с модульным содержимым. Они не маршрутизируются и не видны в навигации. Примером модульной настройки страницы может быть папка, такая как user/pages/01.home. Страница home настроена как модульная страница, которая будет содержать коллекцию дочерних страниц и будет создана из модульных подстраниц _header,_features и _body.

Текстовое имя каждой папки по умолчанию равно slug, которое система использует как часть URL. Например, если у вас есть папка, такая как /user/pages/02.blog, для этой страницы слаг будет по умолчанию blog, а полный URL-адрес будет http://yoursite.com/blog. Страница элемента блога, расположенная в /user/pages/02.blog/blog-item-5, будет доступна через http://yoursite.com/blog/blog-item-5.

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

На самом деле это можно переопределить на самой странице, установив параметр visible в заголовках.

Порядок⚓︎

При работе с коллекциями существует несколько параметров, позволяющих управлять порядком папок. Наиболее важный параметр задается в content.order.by настроек конфигурации страницы. Варианты:

Свойство Описание
default Порядок основан на файловой системе, то есть 01.home располагается перед 02.advark
title Порядок основан на заголовке, как определено на каждой странице.
basename Порядок основан на алфавитной папке без числового порядка
date Порядок основан на дате, определенной на каждой странице.
modified Порядок основан на дате изменения каждой страницы.
folder Порядок основан на имени папки с любым числовым префиксом, т. е. 01., удалено
header.x Порядок основан на любом поле заголовка страницы, например: header.taxonomy.year. Значение по умолчанию можно добавить через вертикальную черту: header.taxonomy.year|2015
manual Порядок основан на переменной order_manual
random Случайный порядок

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

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

Файл страницы⚓︎

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

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

Конечно, вы можете назвать свой файл как угодно, например: document.md, что заставит Grav искать файл шаблона document.html.twig в соответствующей теме.

Это поведение можно изменить на странице, установив параметр template в заголовках.

Пример файла страницы:

---
+title: Заголовок страницы
+taxonomy:
+    category: blog
+---
+
# Заголовок страницы
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque porttitor eu
+felis sed ornare. Sed a mauris venenatis, pulvinar velit vel, dictum enim. Phasellus
+ac rutrum velit. **Nunc lorem** purus, hendrerit sit amet augue aliquet, iaculis
+ultricies nisl. Suspendisse tincidunt euismod risus, _quis feugiat_ arcu tincidunt
+eget. Nulla eros mi, commodo vel ipsum vel, aliquet congue odio. Class aptent taciti
+sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque
+velit orci, laoreet at adipiscing eu, interdum quis nibh. Nunc a accumsan purus.
+

Настройки между парой маркеров --- называются блоком метаданных YAML и состоят из основных настроек YAML для страницы.

В этом примере мы явно устанавливаем заголовок, а также таксономию blog, чтобы можно было отфильтровать её позже. Содержимое после второго --- - это фактическое содержимое, которое будет скомпилировано и отображено на вашем сайте в виде HTML. Это написано в Markdown, который будет подробно рассмотрен в следующей главе. Просто знайте, что маркеры #, ** и _ переводятся в заголовок 1, полужирный и курсив соответственно.

Убедитесь, что вы сохранили файлы .md как файлы в кодировке UTF-8. Это обеспечит их работу со специальными символами для конкретного языка.

Размер тизера и разделитель⚓︎

В файле site.yaml есть настройка, позволяющая определить размер тизера по умолчанию (в символах), который можно использовать через page.summary() для отображения тизера или краткого обзора страницы. Это особенно полезно для блогов, где вы хотите иметь список, содержащий только сводную информацию, а не весь контент страницы.

По умолчанию это значение равно 300 символам. Вы можете переопределить это в вашем файле user/config/site.yaml, но ещё более полезный подход заключается в использовании тизерного разделителя: ===.

Убедитесь, что добавили этот разделитель в свой контент с пустыми строками до и после. Пример:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat.
+
+===
+
+Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+

При этом будет использоваться текст над разделителем, на который ссылается page.summary() и полное содержание страницы, когда на нее ссылаются через page.content().

При использовании page.summary() будет использоваться параметр размера тизера, если разделитель не найден в содержимом страницы.

Поиск других страниц⚓︎

Grav имеет полезную функцию, которая позволяет вам находить другую страницу и выполнять действия на этой странице. Это можно сделать с помощью метода find(), который просто берет текущий маршрут и возвращает объект другой страницы.

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

# Все проекты
+<ul>
+    {% for p in page.find('/projects').children if p != page %}
+        <li><a href="{{p.url}}">{{ p.title }}</a></li>
+    {% endfor %}
+</ul>
+

Объект pages-object недоступен при обработке Twig непосредственно в Markdown-контенте. Однако объект page-object и унаследованный от него метод find() - доступны, поэтому вы можете использовать {% for p in page.find('/projects').children %} в качестве замены вышеприведённому. Обратите внимание, что pages относится ко всем страницам, доступным Grav, а page относится к одной, часто текущей, странице.

В следующем разделе мы продолжим подробно разбираться в особенностях страниц.

contentMeta⚓︎

Ссылки на страницы и контент просты, но как насчет контента, который не отображается вместе с остальной частью страницы?

Когда Grav считывает содержимое страницы, он сохраняет это содержимое в кэше. Таким образом, при следующем отображении страницы не нужно будет читать всё содержимое из файла .md. Как правило, всё это содержимое выводится на передний план. Однако есть случаи, когда полезно иметь некоторые дополнительные данные, хранящиеся рядом со страницей в кэше.

Вот тут-то и появляется contentMeta(). Он используется в плагине Shortcode для извлечения разделов с других страниц, использующих шорт-коды. Пример:

<div id="author">{{ page.find('/my/custom/page').contentMeta.shortcodeMeta.shortcode.section.author }}</div>
+

Мы использовали это в ядре Shortcode для хранения CSS и JS, требующихся на странице. Однако эта функция может быть использована для хранения практически любой структуры данных, которая вам нужна.

\ No newline at end of file diff --git a/content/content-pages/page-types.png b/content/content-pages/page-types.png new file mode 100644 index 00000000..04e89857 Binary files /dev/null and b/content/content-pages/page-types.png differ diff --git a/content/content-types/index.html b/content/content-types/index.html new file mode 100644 index 00000000..1773b7a9 --- /dev/null +++ b/content/content-types/index.html @@ -0,0 +1,24 @@ + Типы контента - Документация Grav CMS на русском

Типы контента⚓︎

Тип контента по умолчанию⚓︎

Как обычно на большинстве веб-платформ, тип контента Grav по умолчанию - HTML. Это означает, что когда пользователь запрашивает маршрут в своем браузере, например: /blog/new-macbook-pros-soon, Grav предполагает, что вы запрашиваете страницу HTML. Если ваша страница была определена страницей с именем файла blog-item.md, Grav, в свою очередь, ищет шаблон Twig под названием blog-item.html.twig для отображения страницы.

Если пользователь явно запросит тип через /blog/new-macbook-pros-soon.html, Grav все равно будет искать тот же файлblog-item.html.twig.

Другие типы контента⚓︎

Однако Grav является гибкой платформой и может фактически обслуживать любой тип контента, который вы можете пожелать (xml,rss, json, pdf и т. д.). Вам просто нужно предоставить способ его рендеринга.

Если вы запрашиваете маршрут с расширением .xml, например: /blog.xml, вместо использования обычного шаблона blog.html.twig для его визуализации, Grav ищет шаблон под названием blog.xml.twig. Вы должны убедиться, что шаблон выводит соответствующую структуру XML.

Пример с JSON-файлами⚓︎

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

Скажем, вы хотели бы сохранить frontmatter и content конкретной страницы в формате JSON, и эта страница должна быть определена в файле с именем item.md. Всё, что вам нужно сделать, это предоставить шаблон Twig с именем item.json.twig. Вы можете поместить это в папку templates/ вашей темы, или, если вы используете плагин для загрузки пользовательских шаблонов, вы можете добавить его туда.

Содержимое этого файла item.json.twig может выглядеть примерно так:

{% set payload = {frontmatter: page.header, content: page.content}  %}
+{{ payload|json_encode|raw }}
+

Всё, что делает этот файл Twig, это создает массив с заголовком страницы как frontmatter и content, затем использует фильтр Twig json_encode для его кодирования.

Когда пользователь запрашивает URL /blog/new-macbook-pros-soon.json, будет использоваться этот новый файл Twig и отправленный вывод будет иметь следующий формат:

{
+   "frontmatter":{
+      "title":"New Macbook Pros Arriving Soon",
+      "date": "14:23 08/01/2016",
+      "taxonomy":{
+         "category":[
+            "blog"
+         ],
+         "tag":[
+            "apple",
+            "mbpr",
+            "laptops"
+         ]
+      }
+   },
+   "content":"<p>this has an -&gt; arrow here and <strong>bold</strong> here</p>\n<blockquote>\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros.\n-- <cite> Ronald Wade</cite></p>\n</blockquote>\n<p>Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus.</p>\n<p>This is a new paragraph</p>\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis.</p>"
+}
+

Это действительный JSON, который можно легко анализировать и обрабатывать с помощью JavaScript. Очень просто!

Пользовательские типы⚓︎

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

Например, если вы хотите отображать события календаря iCal, вам нужно добавить этот тип мультимедиа в user/config/media.yaml:

  ics:
+    type: iCal
+    thumb: media/thumb.png
+    mime: text/calendar
+

Это определяет расширение файла .ics как файлiCal с типом mime: text/calendar. Затем все, что вам нужно сделать, это предоставить соответствующий шаблон .ical.twig для рендеринга любого файла этого типа, который вы запрашиваете.

\ No newline at end of file diff --git a/content/headers/index.html b/content/headers/index.html new file mode 100644 index 00000000..4e263206 --- /dev/null +++ b/content/headers/index.html @@ -0,0 +1,110 @@ + Заголовки / Frontmatter - Документация Grav CMS на русском

Метаданные / Frontmatter⚓︎

Frontmatter - это блок метаданных, который располагается в начале Markdown-файла. Он используется для описания и хранения информации о документе (метаданные документа), такой как заголовок, описание, автор, дата создания, дата публикации, категория, теги и другие параметры. Метаданные совершенно необязательны, они вообще не нужны для отображения страниц в Grav. В Grav существует 3 основных типа страниц (Обычная, Листинг и Модульная), и каждая из них имеет соответствующие метаданные.

Основные метаданные страниц⚓︎

Есть несколько основных доступных параметров метаданных.

Использование кэша⚓︎

cache_enable: false
+

По умолчанию Grav будет кэшировать содержимое файла подкачки, чтобы гарантировать, что всё будет работать как можно быстрее. Существуют расширенные сценарии, в которых вы не хотите, чтобы страница кэшировалась.

Примером этого может служить использование динамических переменных Twig в вашем контенте. Переменная cache_enable позволяет переопределить такое поведение. Допустимыми значениями являются true или false. Мы рассмотрим переменные контента Twig в следующей главе.

Дата⚓︎

date: 01/01/2014 3:14pm
+

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

Даты в форматах m/d/y или d-m-y можно определить, посмотрев на разделитель между различными компонентами: если разделитель представляет собой косую черту (/), то предполагается американский формат m/d/y; тогда как если разделитель представляет собой тире (-) или точку (.), то предполагается европейский формат `d-m-y'.

Меню⚓︎

menu: My Page
+

Переменная menu позволяет задать текст, который будет использоваться в навигации. Существует несколько уровней резервных копий для меню, поэтому, если переменная не установлена, Grav попытается использовать переменную title.

Статус публикации⚓︎

published: true
+

По умолчанию любая страница считается опубликованной, если не задать вручную published: false или если переменная publish_date содержит дату из будущего, или unpublish_date содержит дату из прошлого. Допустимые значения: true или false.

Слаг⚓︎

slug: my-page-slug
+

Переменная slug позволяет вам специально задать часть URL-адреса страницы. Например: http://yoursite.com/my-page-slug-это будет URL-адрес, если вы поставите slug выше. Если slug не установлен на странице, Grav возвращается к использованию имени папки (без каких-либо числовых префиксов).

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

Например: если заголовок сообщения в блоге — Пример сообщения в блоге, то рекомендуемый слаг будет primer-soobshhenija-v-bloge.

Таксономия⚓︎

taxonomy:
+    category: blog
+    tag: [пример, демо, cms]
+

Очень полезная переменная заголовка taxonomy позволяет присваивать значения taxonomy, которые вы определили как допустимые типы в конфигурации сайта.

Если таксономия не определена в этом файле, она будет проигнорирована. В этом примере страница определяется как находящаяся в категории blog и имеет теги: пример, демо и cms. Эти таксономии можно использовать для поиска других страниц, плагинов и даже тем. В главе Таксономия эта концепция будет рассмотрена более подробно.

Заголовок⚓︎

Если у вас нет заголовков вообще, вы не будете иметь никакого контроля над заголовком страницы, как это показано в браузере и поисковых системах. По этой причине рекомендуется как минимум поместить переменную title в начале файла страницы:

title: Заголовок страницы
+

Если переменная title не задана, Grav имеет запасное решение и попытается использовать заглавную переменную slug.

Дополнительные заголовки⚓︎

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

Окончание URL-адреса⚓︎

append_url_extension: '.json'
+

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

Управление кэшем⚓︎

cache_control: max-age=604800
+

Может быть пустым или иметь одно из допустимых значений переменной cache-control.

Формат даты⚓︎

dateformat: 'Y-m-d H:i:s'
+

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

Отладчик⚓︎

Когда вы включаете отладчик через конфигурационный файл system.yaml, панель отладчика будет отображаться на каждой странице. Есть случаи, когда это может быть нежелательно или может привести к конфликтам с выводом. Таким примером является, когда вы запрашиваете страницу, которая предназначена для возвращения отображаемого HTML-кода при AJAX-вызовах. При этом отладчик не должен быть введен в результирующие данные. Чтобы отключить отладчик на конкретной странице, вы можете использовать переменную debugger:

debugger: false
+

ETag⚓︎

etag: true
+

Включить или отключить на уровне страницы отображение переменной заголовка ETag с уникальным значением. false по умолчанию, если только он не переопределен в вашем system.yaml.

Expires⚓︎

expires: 604800
+

Время истечения срока действия страницы в секундах (604800 секунд = 7 дней) (также возможно отключение кэша — no cache).

Внешний URL⚓︎

external_url: https://www.mysite.com/foo/bar
+

Позволяет переопределить динамически сгенерированный URL-адрес тем, который вы явно предоставляете.

Код ответа HTTP⚓︎

http_response_code: 404
+

Позволяет динамическую настройку кода ответа HTTP.

Язык⚓︎

language: fr
+

Это позволяет переопределить язык для конкретной страницы.

Дата изменения⚓︎

last_modified: true
+

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

lightbox: true
+

Хотя, строго говоря, это не стандартный заголовок страницы, это обычный способ разрешить загрузку стандартного лайтбокса JavaScript и CSS для страницы. По умолчанию, например, тема Antimatter не загружает предварительные условия для включения возможностей лайтбокса изображений, обязательно установите плагин лайтбокса, такой как Featherlight, который доступен через GPM.

Перенаправление после авторизации⚓︎

login_redirect_here: false
+

Заголовок login_redirect_here позволяет вам определить, должен ли пользователь оставаться на этой странице после входа в систему через плагин Login. Если установить для этого заголовка значение false, пользователи будут перенаправлены на предыдущую страницу.

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

Вы можете переопределить это поведение по умолчанию принудительно установив стандартное расположение, указав явный параметр в конфигурации входа YAML:

redirect_after_login: '/profile'
+

Перенаправление на маршрут /profile после успешного входа в систему.

Markdown⚓︎

  markdown:
+    extra: false
+    auto_line_breaks: false
+    auto_url_links: false
+    escape_markup: false
+    special_chars:
+      '>': 'gt'
+      '<': 'lt'
+
Параметр Описание
extra: Включить поддержку Markdown Extra (GFM по умолчанию)
auto_line_breaks: Включить автоматические разрывы линий
auto_url_links: Включить автоматические HTML-ссылки
escape_markup: Экранирование тегов разметки в HTML-сущности
special_chars: Список специальных символов для автоматического преобразования

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

Запрет кэширования Twig⚓︎

never_cache_twig: true
+

Включение этого позволит вам добавить логику обработки, которая может динамически изменяться при каждой загрузке страницы, а не кэшировать результаты и сохранять их для каждой загрузки страницы. Это можно включить/отключить по всему сайту в system.yaml или на определенной странице. Может быть установлено true или false.

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

В настоящее время это несовместимо с twig_first: true, потому что вся обработка происходит в одном вызове Twig.

Обработка текста⚓︎

process:
+    markdown: false
+    twig: true
+

Обработка страницы — ещё одна продвинутая возможность. По умолчанию Grav будет обрабатывать markdown, но не будет обрабатывать twig на странице. Этот выбор не обрабатывать Twig по умолчанию исключительно из соображений производительности, так как это не очень часто используемая функция. Переменная process позволяет вам переопределить это поведение.

Возможно, вы захотите отключить markdown на определенной странице, если хотите использовать 100% только HTML на своей странице и вообще не запускать процесс обработки. Также он позволяет плагину полностью обрабатывать контент. Допустимые значения: true или false.

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

Приоритет обработки Twig⚓︎

twig_first: false
+

Если установлено значение true, обработка Twig будет происходить перед любой обработкой Markdown. Это может быть особенно полезно, если ваш Twig генерирует код Markdown, которая должна быть доступна для обработки компилятором Markdown. Стоит отметить, что если кэширование страниц cache_enable: false отключено, то и twig_first: true будет соответственно отключаться.

Дата публикации⚓︎

publish_date: 01/23/2015 13:00
+

Необязательное поле, но можно указать дату для автоматической публикации. Допустимые значения - это любые строковые значения даты, которые поддерживает strtotime().

Перенаправление⚓︎

redirect: '/some/custom/route'
+

или

redirect: 'http://someexternalsite.com'
+

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

Вы также можете добавить код перенаправления в URL, используя квадратные скобки:

redirect: '/some/custom/route[303]'
+

Маршрутизация⚓︎

routes:
+  default: '/my/example/page'
+  canonical: '/canonical/url/alias'
+  aliases:
+    - '/some/other/route'
+    - '/can-be-any-valid-slug'
+

Теперь вы можете указать маршрут по умолчанию, который переопределяет стандартную структуру маршрута, определенную структурой папок.

Вы также можете указать конкретный канонический маршрут , который может быть использован в темах для вывода канонической ссылки:

<link rel="canonical" href="https://yoursite/dresses/green-dresses-are-awesome" />
+

Наконец, вы можете указать массив псевдонимов маршрутов, которые можно использовать в качестве альтернативных маршрутов для конкретной страницы.

Маршрутизируемость⚓︎

routable: false
+

По умолчанию все страницы маршрутизируемые. Это означает, что их можно открыть, введя в любом браузере нужный URL-адрес. Однако вам может потребоваться создать страницу для хранения определенного контента, но она предназначена для прямого вызова плагина, другого контента или даже темы напрямую. Хорошим примером этого является страница Ошибка 404.

Grav автоматически ищет страницу с маршрутом /error, если не удается найти другую страницу. Поскольку это фактическая страница в Grav, вы можете полностью контролировать, как выглядит эта страница. Однако вы, вероятно, не хотите, чтобы люди обращались к этой странице непосредственно в своем браузере, поэтому для этой страницы обычно устанавливается переменная routable, равная false. Допустимые значения: true или false.

SSL⚓︎

ssl: true
+

Теперь вы можете активировать определенную страницу с помощью SSL on или off. Это работает только с опцией absolute_urls: true, установленной в конфигурации system.yaml. Это связано с тем, что для переключения между страницами SSL и без SSL необходимо использовать полные URL-адреса с включенным протоколом и хостом.

Тизер⚓︎

summary:
+  enabled: true
+  format: short | long
+  size: int
+

Параметр summary определяет, что возвращает метод page.summary(). Это чаще всего используется в сценарии типа листинга блога, но может использоваться в любое время, когда вам нужен краткий обзор или краткое содержание содержимого страницы. Сценарии следующие:

Параметр Описание
enabled: Отключить сводку страницы (сводка возвращается так же, как содержимое страницы)
format:
  • long = Любой итоговый разделитель контента будет игнорироваться
  • short = Обнаружение и усечение содержимого до позиции суммарного разделителя

Атрибут size имеет разные значения, когда формат установлен в short и long:

Короткий размер Описание
size: 0 Если разделитель сводки не найден, сводка равна содержанию страницы, в противном случае содержимое будет усечено до позиции разделителя.
size: int Всегда обрезайте содержимое после int символов. Если был найден итоговый разделитель, то обрезать содержимое до позиции итогового разделителя
Длинный размер Описание
size: 0 Тизер соответствует всему содержанию страницы
size: int Содержимое будет усечено после int символов, независимо от позиции суммарного разделителя

Шаблон⚓︎

template: custom
+

Как объяснено в предыдущей главе, шаблон из темы, который используется для визуализации страницы, основан на имени файла .md.

Таким образом, файл с именем default.md будет использовать шаблон default в активной теме. Конечно, вы можете переопределить это поведение, просто установив переменную template в заголовке и выбрав другой шаблон.

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

Формат шаблона⚓︎

template_format: xml
+

Традиционно, если вы хотите, чтобы страница выводила определённый формат (например, xml, json и т. д.), вам необходимо добавить формат в URL. Например, если ввести http://example.com/sitemap.xml, браузеру будет отображаться содержимое с использованием шаблона Twig xml, заканчивающегося на .xml.twig. Это всё хорошо, потому что в Grav мы любим делать вещи просто.

Используя заголовок страницы template_format, мы можем указать браузеру, как отображать страницу без необходимости расширений в URL. Введя template_format: xml на нашей страницеsitemap, мы можем заставить работать http://example.com/sitemap для нас, не добавляя .xml в конец.

Мы использовали этот метод в плагине Sitemap.

Дата отмены публикации⚓︎

unpublish_date: 05/17/2015 00:32
+

Необязательное поле, но можно указать дату автоматического запуска отмены публикации. Допустимые значения — это любые строковые значения даты, которые поддерживает strtotime().

Видимость⚓︎

visible: false
+

По умолчанию страница видима в навигации, если окружающая папка имеет числовой префикс, то есть /01.home видна, а /error не видна. Это поведение можно переписать, установив переменную visible в заголовке. Допустимые значения: true или false.

Пользовательские заголовки⚓︎

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

sitemap:
+    changefreq: monthly
+    priority: 1.03
+

Значимость этих заголовков в том, что Grav не использует их по умолчанию. Они считываются только плагином sitemap, чтобы определить, как часто эта конкретная страница изменяется и каков должен быть её приоритет.

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

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

Например, вы, возможно, захотите связать ссылку на автора для этой страницы. Если вы добавили эти настройки YAML в заголовок страницы:

author:
+    name: Сэнди Джонсон
+    twitter: @sandyjohnson
+    bio: Сэнди является независимым журналистом и автором нескольких публикаций на платформах CMS с открытым исходным кодом.
+

Затем вы можете получить к ним доступ из Twig:

<section id="author-details">
+    <h2>{{ page.header.author.name }}</h2>
+    <p>{{ page.header.author.bio }}</p>
+    <span>Contact: <a href="https://twitter.com/{{ page.header.author.twitter }}"><i class="fa fa-twitter"></i></a></span>
+</section>
+

Мета-заголовки⚓︎

Мета-заголовки позволяют вам установить стандартный набор тегов HTML для каждой страницы, а также OpenGraph, Facebook и Twitter

Пример стандартных мета-заголовков⚓︎

metadata:
+    refresh: 30
+    generator: 'Grav'
+    description: 'Здесь находится описание вашей страницы'
+    keywords: 'HTML, CSS, XML, JavaScript'
+    author: 'Вася Пупкин'
+    robots: 'noindex, nofollow'
+    my_key: 'my_value'
+

Результирующий HTML:

<meta name="generator" content="Grav" />
+<meta name="description" content="Здесь находится описание вашей страницы" />
+<meta http-equiv="refresh" content="30" />
+<meta name="keywords" content="HTML, CSS, XML, JavaScript" />
+<meta name="author" content="Вася Пупкин" />
+<meta name="robots" content="noindex, nofollow" />
+<meta name="my_key" content="my_value" />
+

Все метатеги HTML5 поддерживаются.

Пример мета-тегов OpenGraph⚓︎

metadata:
+    'og:title': The Rock
+    'og:type': video.movie
+    'og:url': http://www.imdb.com/title/tt0117500/
+    'og:image': http://ia.media-imdb.com/images/rock.jpg
+

Результирующий HTML:

<meta name="og:title" property="og:title" content="The Rock" />
+<meta name="og:type" property="og:type" content="video.movie" />
+<meta name="og:url" property="og:url" content="http://www.imdb.com/title/tt0117500/" />
+<meta name="og:image" property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
+

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

Пример мета-тега Facebook⚓︎

metadata:
+    'fb:app_id': your_facebook_app_id
+

Результирующий HTML:

<meta name="fb:app_id" property="fb:app_id" content="your_facebook_app_id" />
+

Facebook в основном использует метатеги OpenGraph, но есть некоторые специфичные для Facebook теги, которые Grav поддерживает автоматически.

Пример мета-тегов Twitter⚓︎

metadata:
+    'twitter:card' : summary
+    'twitter:site' : @flickr
+    'twitter:title' : Заголовок вашей страницы
+    'twitter:description' : Описание вашей страницы может содержать сводную информацию
+    'twitter:image' : https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg
+

Результирующий HTML:

<meta name="twitter:card" property="twitter:card" content="summary" />
+<meta name="twitter:site" property="twitter:site" content="@flickr" />
+<meta name="twitter:title" property="twitter:title" content="Заголовок вашей страницы" />
+<meta name="twitter:description" property="twitter:description" content="Описание вашей страницы может содержать сводную информацию" />
+<meta name="twitter:image" property="twitter:image" content="https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg" />
+

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

Это действительно обеспечивает большую гибкость и мощность.

Frontmatter.yaml⚓︎

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

Чтобы воспользоваться этим, просто создайте файл frontmatter.yaml рядом с файлом вашей страницы .md и добавьте любые допустимые значения метаданных. Например:

metadata:
+    generator: 'Super Grav'
+    description: Give your page a powerup with Grav!
+

Если конкретный параметр определён и в frontmatter.yaml, и в метаданных страницы, то приоритет имеют значения метаданных страницы.

Использование frontmatter.yaml — это функция на стороне файла, которая не поддерживается плагином админки.

\ No newline at end of file diff --git a/content/image-linking/index.html b/content/image-linking/index.html new file mode 100644 index 00000000..a555718a --- /dev/null +++ b/content/image-linking/index.html @@ -0,0 +1,24 @@ + Ссылки на изображения - Документация Grav CMS на русском

Ссылки на изображения⚓︎

Grav имеет множество гибких вариантов связывания, которые позволяют ссылаться на изображения с других страниц сайта и даже из удаленных источников. Если вы когда-либо связывали файлы с помощью HTML или работали с файловой системой с помощью командной строки, многое из этого должно быть элементарным.

Мы рассмотрим несколько простых примеров, используя эту очень простую, урезанную модель того, как может выглядеть каталог pages сайта Grav.

Директория pages

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

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

Если вы решите использовать централизованный каталог изображений, имейте в виду, что этот каталог должен существовать в папке /pages, поскольку эта папка предназначена для внешнего содержимого.

Для начала вот краткий обзор некоторых стандартных компонентов тега изображения на основе Grav Markdown.

![Альтернативный текст](../path/image.ext)
+
Строка Описание
! При размещении в начале традиционного тега ссылки Markdown он указывает, что это тег изображения.
[] Квадратная скобка используется для обертывания необязательного альтернативного текста изображения.
() В круглых скобках заключена ссылка на само изображение. Они помещаются сразу после квадратной скобки.
../ Когда используется в ссылке, это означает перемещение вверх по каталогу.

Вы можете объединить обычную ссылку на страницу и ссылку на изображение, как если бы изображение было заключено в ссылку: [![Альтернативный текст](/path/to/img.jpg)](http://example.net/)

Относительный слаг⚓︎

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

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

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

Ссылка на файл указывает на конкретный файл по имени, а не по его каталогу или ярлыку. Если бы вы создавали ссылку на изображение в pages/01.blog/test-post-1/item.md на /pages/01.blog/test-post-3/test-image-3.jpg, вы бы использовали следующую команду:

![Тестовая картинка 3](../test-post-3/test-image-3.jpg)
+

Эта ссылка перемещает на одну папку вверх, как обозначено ../, а затем на одну папку вниз, указывая прямо на test-image-3.jpg в качестве места назначения.

Если мы хотим загрузить blog-header.jpg из каталога01.blog, мы должны сделать следующее:

![Заголовок блога](/blog/blog-header.jpg)
+

Вам не нужно включать порядковые номера (01.) для относительных ссылок заголовка.

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

Например, Test Post 2 имеет ярлык, установленный через его markdown-файл (/pages/01.blog/test-post-2/item.md). Заголовок этого файла содержит следующее:

---
+title: Test Post 2
+slug: test-slug
+taxonomy:
+    category: blog
+---
+

Вы заметите, что установлен ярлык test-slug. Установленные таким образом ярлыки не являются обязательными. Как упоминалось в предыдущей главе, они действительно предоставляют простой способ связи. Если задан слаг, то любая ссылка, которую вы делаете для медиафайла в этой папке, должна быть относительным слагом или абсолютной с полным URL-адресом, установленным для ссылки.

Если мы хотим связать test-image-2.jpg с Test Post 2, мы должны ввести следующее:

![Тестовая картинка 2](../test-slug/test-image-2.jpg)
+

Вы заметите, что мы перешли на один каталог вверх, используя (../), а затем вниз в папку страницы test-slug, используя slug, который был установлен в файле /pages/01.blog/test-post-2/item.md.

Относительная директория⚓︎

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

Примером этого может быть что-то вроде:

![Тестовая картинка 3](/01.blog/02.my_folder/test-image-3.jpg)
+

Основное преимущество этого заключается в том, что вы можете поддерживать целостность ссылок в других системах за пределами Grav, таких как GitHub.

Абсолютные ссылки⚓︎

Абсолютные ссылки аналогичны относительным, но относятся к корню сайта. В Grav корнем обычно считается /user/pages/. Этот тип ссылки может быть выполнен двумя разными способами.

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

Абсолютная ссылка начинается с помощью символа /. Вот пример абсолютной ссылки на pages/01.blog/test-post-2/test-image-2.jpg в стиле слаг из pages/01.blog/blog.md.

![Тестовая картинка 2](/blog/test-slug/test-image-2.jpg)
+

Мощный метод — создать папку user/pages/images/ на вашем сайте Grav и поместить сюда свои изображения. Затем вы можете легко ссылаться на них с помощью абсолютного URL-адреса с любой страницы Grav: /images/test-image-4.jpg и по-прежнему иметь возможность выполнять медиа-действия с ними.

Потоки PHP⚓︎

У вас есть возможность ссылаться на изображения и связывать их через потоки PHP. Доступно несколько встроенных потоков PHP, которые полезны, в том числе:

  • user:// - папка пользователя. Например user/
  • page:// - папка страниц. Например user/pages/
  • image:// - папка изображений. Например user/images/
  • plugins:// - папка плагинов. Например user/plugins/
  • theme:// - текущая тема. Например user/themes/antimatter/

Это позволяет вам легко получать доступ к изображениям, которые традиционно находятся за пределами иерархии страниц (user/pages/).

![Stream Image](user://media/images/my-image.jpg)
+

или:

![Stream Image](theme://images/my-image.jpg)
+

Полный список местоположений потоков по умолчанию см. в разделе Настройка мультисайта - Потоки.

Полные URL-адреса изображений⚓︎

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

![Remote Image 1](https://getgrav.org/images/testimage.png)
+

Вы можете ссылаться практически на любой прямой URL, включая защищенные ссылки HTTPS.

Действия мультимедиа с изображениями⚓︎

Одним из основных преимуществ использования изображений, связанных со страницами, является то, что это позволяет вам воспользоваться преимуществами мощных медиа-действий Grav. Например, вот строка, которую вы могли бы использовать для загрузки изображения с другой страницы:

![Styling Example](../test-post-3/test-image-3.jpg?cropResize=400,200)
+

или воспользоваться потоками для доступа к изображению в текущей теме:

![Stream Image](theme://images/default-avatar.jpg?cropZoom=200,200&brightness=-75)
+

Вы найдете больше информации о действиях и других функциях мультимедийных файлов в следующей главе.

Атрибуты изображения⚓︎

Отличная новая функция, которой вы можете воспользоваться — предоставление атрибутов изображения напрямую через синтаксис Markdown. Это позволяет вам легко добавлять атрибуты HTML classes и id без необходимости использования Markdown Extra.

Вот некоторые примеры этого:

Одиночный класс⚓︎

![My Image](my-image.jpg?classes=float-left)
+

что приведет к такому HTML:

<img src="/your/pages/some-page/my-image.jpg" class="float-left" />
+

Несколько классов⚓︎

![My Image](my-image.jpg?classes=float-left,shadow)
+

что приведет к такому HTML:

<img src="/your/pages/some-page/my-image.jpg" class="float-left shadow" />
+

Атрибут ID⚓︎

![My Image](my-image.jpg?id=special-id)
+

что приведет к такому HTML:

<img src="/your/pages/some-page/my-image.jpg" id="special-id" />
+
\ No newline at end of file diff --git a/content/image-linking/pages.png b/content/image-linking/pages.png new file mode 100644 index 00000000..dcf1adf5 Binary files /dev/null and b/content/image-linking/pages.png differ diff --git a/content/linking/index.html b/content/linking/index.html new file mode 100644 index 00000000..ea12670a --- /dev/null +++ b/content/linking/index.html @@ -0,0 +1,31 @@ + Ссылки на страницы - Документация Grav CMS на русском

Ссылки на страницы⚓︎

Grav имеет множество гибких вариантов ссылок, которые позволяют вам переходить с одной страницы на другую и даже на удаленные страницы. Если вы когда-либо связывали файлы с помощью HTML или работали с файловой системой с помощью командной строки, многое из этого будет очень легко понять.

Мы рассмотрим несколько простых примеров, используя эту очень простую, урезанную модель того, как может выглядеть каталог user/pages сайта Grav.

Директория Pages

Используя эту структуру каталогов в качестве примера, мы рассмотрим различные типы ссылок, которые вы можете использовать в своем контенте.

Для начала вот краткий обзор некоторых общих компонентов Grav-ссылки и их значений.

[Связанный контент](../path/slug/page)
+
Строка Описание
[] Квадратные скобки используются для обтекания текста или альтернативного содержимого, на которое делается ссылка. В HTML это будет контент, помещенный между <a href=""> и </a>.
() Круглые скобки используются для заключения самой ссылки. Они помещаются сразу после квадратной скобки..
../ Когда используется в ссылке, это означает перемещение вверх по каталогу.

Относительный слаг⚓︎

Grav не ограничивает ваши внутренние ссылки конкретными именами в структуре файлов/каталогов. Он также может извлекать ярлыки, назначенные как в заголовке файла, так и в имени резервного каталога. Это упрощает создание быстрых ссылок, поскольку вам не нужно запоминать конкретное имя файла, а нужно запоминать ярлык.

Механизм создания шаблонов Grav использует имена файлов, чтобы определить, какой шаблон применить к ним. Например, блог может использовать стандартное имя файла item.md для каждого сообщения в блоге. Самому сообщению в блоге можно назначить более понятный ярлык, например grass или grass-is-green.

Именам каталогов также присвоены номера, которые помогают при упорядочивании. Эти числа необязательно включать в ссылки, относящиеся к слагам. Grav игнорирует их при создании слага, поэтому структура URL-адресов вашего сайта будет более чистой.

Вот несколько примеров ссылок с относительным слагом.

В этом примере мы перемещаемся вверх по каталогу и загружаем страницу по умолчанию, расположенную в каталоге pages/01.blue/02.water/item.md, из pages/01.blue/01.sky/item.md. У файла item.md нет назначенного слага, поэтому Grav использует имя каталога.

[ссылка](../water)
+

Следующий пример делает очень похожую вещь, связывая pages/01.blue/01.sky/item.md с pages/02.green/02.tree/item.md, но при загрузке файла item.md файлу tree-is-green был назначен слаг.

[ссылка](/green/tree-is-green)
+

Слаг, помещенный в заголовок item.md, заменяет слаг green из имени папки по умолчанию.

Относительная директория⚓︎

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

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

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

Ссылка на файл указывает на конкретный файл по имени, а не по его каталогу или ярлыку. Если вы создавали ссылку с pages/01.blue/01.sky/item.md на /pages/02.green/01.grass/item.md, вы бы использовали следующую команду.

[ссылка](/02.green/01.grass/item.md)
+

Эта ссылка перемещает две папки вверх, как обозначено /, а затем вниз на две папки, указывая непосредственно на item.md в качестве места назначения.

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

В этом примере мы будем связывать pages/01.blue/01.sky/item.md с /pages/02.green/, что по умолчанию загрузит файл color.md.

[ссылка](/02.green)
+

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

Следующий пример очень похож на ссылку на файл, которую мы продемонстрировали ранее. Вместо того, чтобы напрямую связываться с файлом, мы связываемся с его каталогом, который в любом случае должен загрузить нужный нам файл, поскольку это файл по умолчанию. Если вы создавали ссылку с pages/01.blue/01.sky/item.md на /pages/02.green/01.grass/, вы должны использовать следующую команду.

[ссылка](/02.green/01.grass)
+

Абсолютные ссылки⚓︎

Абсолютные ссылки аналогичны относительным ссылкам, но относятся к корню сайта. В Grav это обычно находится в вашем каталоге /user/pages/. Этот тип ссылки может быть выполнен двумя разными способами.

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

В абсолютной ссылке ссылка открывается с помощью символа /. Вот пример абсолютной ссылки на pages/01.blue/01.sky/item.md в стиле слаг.

[ссылка](/blue/sky)
+

Второй метод основан на стиле относительных директорий, подробно описанном ранее. Этот метод оставляет такие элементы, как порядковые номера в начале имен каталогов. Хотя это увеличивает вероятность неработающей ссылки при переупорядочении контента, это более надежно при использовании с такими службами, как Github, где ссылки на контент не имеют преимущества гибкости Grav. Вот пример абсолютной ссылки на pages/01.blue/01.sky/item.md с использованием этого стиля.

[ссылка](/01.blue/01.sky)
+

Удаленные ссылки⚓︎

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

[ссылка](https://www.google.com)
+

Вы можете ссылаться практически на любой прямой URL, включая защищенные ссылки HTTPS. Например:

[ссылка](https://github.com)
+

Атрибуты ссылки⚓︎

Отличная новая функция, которой вы можете воспользоваться — предоставление атрибутов ссылки напрямую через синтаксис Markdown. Это позволяет легко добавлять атрибуты HTML class, id, rel и target без необходимости использовать Markdown Extra.

Вот некоторые примеры этого:

Атрибут Class/Classes⚓︎

[Большая кнопка](../some-page?classes=button,big)
+

что приведет к такому HTML:

<a href="/your/pages/some-page" class="button big">Большая кнопка</a>
+

Атрибут ID⚓︎

[Уникальная кнопка](../some-page?id=important-button)
+

что приведет к такому HTML:

<a href="/your/pages/some-page" id="important-button">Уникальная кнопка</a>
+

Атрибут Rel⚓︎

[Ссылка с NoFollow](../some-page?rel=nofollow)
+

что приведет к такому HTML:

<a href="/your/pages/some-page" rel="nofollow">Ссылка с NoFollow</a>
+

Атрибут Target⚓︎

[Ссылка в новой вкладке](../some-page?target=_blank)
+

что приведет к такому HTML:

<a href="/your/pages/some-page" target="_blank">Ссылка в новой вкладке</a>
+

Комбинации атрибутов⚓︎

[Комбинации атрибутов](../some-page?target=_blank&classes=button)
+

что приведет к такому HTML:

<a href="/your/pages/some-page" target="_blank" class="button">Комбинации атрибутов</a>
+

Комбинации атрибутов с якорями⚓︎

[Якорь ссылки](../some-page?target=_blank&classes=button#element-id)
+

что приведет к такому HTML:

<a href="/your/pages/some-page#element-id" target="_blank" class="button">Якорь ссылки</a>
+

Якорные ссылки на той же странице⚓︎

[Якорь ссылки](?classes=button#element-id)
+

что приведет к такому HTML:

<a href="#element-id" class="button">
+

Обратите внимание, что привязка должна появиться после запроса, как описано в проблеме 1324

Передача неподдерживаемых атрибутов⚓︎

[Передача атрибута 'cat'](../some-page?classes=underline&cat=black)
+

что приведет к такому HTML:

<a href="/your/pages/some-page?cat=black" class="underline">Передача атрибута 'cat'</a>
+

Пропуск всех атрибутов⚓︎

[Пропуск всех атрибутов](../some-page?classes=underline&rel=nofollow&noprocess)
+

что приведет к такому HTML:

<a href="/your/pages/some-page?rel=nofollow&classes=underline">Пропуск всех атрибутов</a>
+

Пропуск определённых атрибутов⚓︎

[Пропускаем определённые атрибуты](../some-page?id=myvariable&classes=underline&target=_blank&noprocess=id,classes)
+

что приведет к такому HTML:

<a href="/your/pages/some-page?id=myvariable&classes=underline" target="_blank">Пропускаем определённые атрибуты</a>
+

Это полезно при попытке пропустить один или несколько конкретных атрибутов, не затрагивая другие.

\ No newline at end of file diff --git a/content/linking/pages.jpg b/content/linking/pages.jpg new file mode 100644 index 00000000..46f1fa30 Binary files /dev/null and b/content/linking/pages.jpg differ diff --git a/content/markdown/index.html b/content/markdown/index.html new file mode 100644 index 00000000..3e27fa75 --- /dev/null +++ b/content/markdown/index.html @@ -0,0 +1,215 @@ + Синтаксис Markdown - Документация Grav CMS на русском

Синтаксис Markdown⚓︎

Посмотрим правде в глаза: написание контента для Интернета утомительно. Редакторы WYSIWYG облегчают эту задачу, но обычно они приводят к ужасному коду или, что ещё хуже, уродливым веб-страницам.

Markdown — лучший способ написать HTML, без всех сложностей и уродства, которые обычно сопровождают его.

Некоторые из ключевых преимуществ:

  1. Markdown прост в освоении, с минимальным количеством дополнительных символов, поэтому писать контент также быстрее.
  2. Меньше вероятность ошибок при записи.
  3. Создает действительный вывод XHTML.
  4. Содержит контент и визуальный дисплей отдельно, поэтому вы не можете испортить внешний вид вашего сайта.
  5. Пишите в любом текстовом редакторе или приложении Markdown, которое вам нравится.
  6. Использование Markdown — одно удовольствие!

Джон Грубер, автор Markdown, говорит об этом так:

Основная цель разработки синтаксиса форматирования Markdown - сделать его максимально читаемым. Идея состоит в том, что отформатированный с помощью Markdown документ должен быть опубликован как есть, как обычный текст, не выглядя так, как будто он размечен тегами или инструкциями по форматированию. Несмотря на то, что на синтаксис Markdown влияют несколько существующих фильтров преобразования текста в HTML, единственным основным источником вдохновения для синтаксиса Markdown является формат простой текстовой электронной почты. -- Джон Грубер

Grav поставляется со встроенной поддержкой Markdown и Markdown Extra. Вы должны включить Markdown Extra в конфигурационном файле system.yaml.

Давайте рассмотрим основные элементы Markdown и то, как выглядит полученный HTML:

Добавьте эту страницу в закладки для удобства использования в будущем!

Заголовки⚓︎

Заголовки от h1 до h6 состоят из символа # для каждого уровня:

# Заголовок h1
+## Заголовок h2
+### Заголовок h3
+#### Заголовок h4
+##### Заголовок h5
+###### Заголовок h6
+

HTML:

<h1>Заголовок h1</h1>
+<h2>Заголовок h2</h2>
+<h3>Заголовок h3</h3>
+<h4>Заголовок h4</h4>
+<h5>Заголовок h5</h5>
+<h6>Заголовок h6</h6>
+

Комментарии⚓︎

Комментарии должны быть совместимы с HTML

<!--
+Это комментарий
+-->
+

Комментарий ниже не должен быть виден:

Горизонтальные линии⚓︎

Элемент HTML <hr> предназначен для создания «тематического разрыва» между элементами уровня абзаца. В Markdown вы можете создать


любым из способов ниже:
  • ___: три последовательных подчеркивания
  • ---: три последовательных тире
  • ***: три звездочки подряд

преобразуется в:




Обычный текст⚓︎

Обычный текст будет заключен в теги <p> </p> в обработанном HTML.

Итак, это обычный текст:

Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.
+

преобразуется в такой HTML:

<p>Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.</p>
+

Разрыв строки может быть выполнен с 2 пробелами, за которыми следует 1 перенос строки.

Встроенный HTML⚓︎

Если вам нужен определённый HTML-тег (с классом), вы можете использовать обычный HTML:

Абзац в Markdown.
+
+<div class="class">
+    Это <b>HTML</b>
+</div>
+
+Абзац в Markdown.
+

Акцент⚓︎

Жирный⚓︎

Для выделения фрагмента текста с большим весом шрифта.

Следующий фрагмент текста выделен жирным шрифтом.

**преобразуется в жирный текст**
+

преобразуется в:

преобразуется в жирный текст

и такой HTML:

<strong>преобразуется в жирный текст</strong>
+

Курсив⚓︎

Для выделения фрагмента текста курсивом.

Следующий фрагмент текста представлен как курсив.

_преобразуется в курсив_
+

преобразуется в:

преобразуется в курсив

и такой HTML:

<em>преобразуется в курсив</em>
+

Зачеркнутый⚓︎

В GFM (GitHub Flavored Markdown) вы можете делать зачеркивания.

~~Зачеркни этот текст.~~
+

Преобразуется в:

~~Зачеркни этот текст.~~

HTML:

<del>Зачеркни этот текст.</del>
+

Цитаты⚓︎

Для цитирования блоков контента из другого источника в вашем документе.

Добавьте > перед любым текстом, который вы хотите процитировать.

> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined.
+

Преобразуется в:

Fusion Drive combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined.

и такой HTML:

<blockquote>
+  <p><strong>Fusion Drive</strong> combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined.</p>
+</blockquote>
+

Цитаты также могут быть вложенными:

> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue.
+Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi.
+>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor
+odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam.
+

Преобразуется в:

Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi.

Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam.

Уведомления⚓︎

Старый механизм уведомлений, отменяющий синтаксис блочных кавычек (>>>), устарел. Уведомления теперь обрабатываются через специальный плагин под названием Markdown Notices

Списки⚓︎

Неупорядоченный⚓︎

Список элементов, в котором порядок явно не имеет значения.

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

* правильный маркер
+- правильный маркер
++ правильный маркер
+

Пример

+ Lorem ipsum dolor sit amet
++ Consectetur adipiscing elit
++ Integer molestie lorem at massa
++ Facilisis in pretium nisl aliquet
++ Nulla volutpat aliquam velit
+  - Phasellus iaculis neque
+  - Purus sodales ultricies
+  - Vestibulum laoreet porttitor sem
+  - Ac tristique libero volutpat at
++ Faucibus porta lacus fringilla vel
++ Aenean sit amet erat nunc
++ Eget porttitor lorem
+

Преобразуется в:

  • Lorem ipsum dolor sit amet
  • Consectetur adipiscing elit
  • Integer molestie lorem at massa
  • Facilisis in pretium nisl aliquet
  • Nulla volutpat aliquam velit
  • Phasellus iaculis neque
  • Purus sodales ultricies
  • Vestibulum laoreet porttitor sem
  • Ac tristique libero volutpat at
  • Faucibus porta lacus fringilla vel
  • Aenean sit amet erat nunc
  • Eget porttitor lorem

И такой HTML

<ul>
+  <li>Lorem ipsum dolor sit amet</li>
+  <li>Consectetur adipiscing elit</li>
+  <li>Integer molestie lorem at massa</li>
+  <li>Facilisis in pretium nisl aliquet</li>
+  <li>Nulla volutpat aliquam velit
+    <ul>
+      <li>Phasellus iaculis neque</li>
+      <li>Purus sodales ultricies</li>
+      <li>Vestibulum laoreet porttitor sem</li>
+      <li>Ac tristique libero volutpat at</li>
+    </ul>
+  </li>
+  <li>Faucibus porta lacus fringilla vel</li>
+  <li>Aenean sit amet erat nunc</li>
+  <li>Eget porttitor lorem</li>
+</ul>
+

Упорядоченный⚓︎

Список элементов, в котором порядок элементов явно имеет значение.

1. Lorem ipsum dolor sit amet
+2. Consectetur adipiscing elit
+3. Integer molestie lorem at massa
+4. Facilisis in pretium nisl aliquet
+5. Nulla volutpat aliquam velit
+6. Faucibus porta lacus fringilla vel
+7. Aenean sit amet erat nunc
+8. Eget porttitor lorem
+

Преобразуется в:

  1. Lorem ipsum dolor sit amet
  2. Consectetur adipiscing elit
  3. Integer molestie lorem at massa
  4. Facilisis in pretium nisl aliquet
  5. Nulla volutpat aliquam velit
  6. Faucibus porta lacus fringilla vel
  7. Aenean sit amet erat nunc
  8. Eget porttitor lorem

И такой HTML:

<ol>
+  <li>Lorem ipsum dolor sit amet</li>
+  <li>Consectetur adipiscing elit</li>
+  <li>Integer molestie lorem at massa</li>
+  <li>Facilisis in pretium nisl aliquet</li>
+  <li>Nulla volutpat aliquam velit</li>
+  <li>Faucibus porta lacus fringilla vel</li>
+  <li>Aenean sit amet erat nunc</li>
+  <li>Eget porttitor lorem</li>
+</ol>
+

Если вы просто используете 1. для каждого пункта списка, Markdown применит автоматическую нумерацию. Например:

1. Lorem ipsum dolor sit amet
+1. Consectetur adipiscing elit
+1. Integer molestie lorem at massa
+1. Facilisis in pretium nisl aliquet
+1. Nulla volutpat aliquam velit
+1. Faucibus porta lacus fringilla vel
+1. Aenean sit amet erat nunc
+1. Eget porttitor lorem
+

Преобразуется в:

  1. Lorem ipsum dolor sit amet
  2. Consectetur adipiscing elit
  3. Integer molestie lorem at massa
  4. Facilisis in pretium nisl aliquet
  5. Nulla volutpat aliquam velit
  6. Faucibus porta lacus fringilla vel
  7. Aenean sit amet erat nunc
  8. Eget porttitor lorem

Код⚓︎

Встроенный код⚓︎

Оберните встроенные фрагменты кода в `.

В этом примере блок `<section> </section>` должен быть заключен в **код**.
+

Преобразуется в:

В этом примере блок <section> </section> должен быть заключен в код.

HTML:

<p>В этом примере блок <code>&lt;section&gt;&lt;/section&gt;</code> должен быть заключен в <strong>code</strong>.</p>
+

Код с отступом⚓︎

Или сделайте отступ в нескольких строках кода как минимум на четыре пробела, например:

```
+  // Комментарий
+  line 1 of code
+  line 2 of code
+  line 3 of code
+```
+

Преобразуется в:

// Комментарий
+line 1 of code
+line 2 of code
+line 3 of code
+

HTML:

<pre>
+  <code>
+    // Комментарий
+    line 1 of code
+    line 2 of code
+    line 3 of code
+  </code>
+</pre>
+

Блок кода с «заборчиками»⚓︎

Используйте тройные кавычки ```, чтобы вывести текст в нескольких строках кода с атрибутом языка

```
+Образец текста...
+```
+

HTML:

<pre language-html>
+  <code>Образец текста...</code>
+</pre>
+

Подсветка синтаксиса⚓︎

GFM или «GitHub Flavored Markdown» также поддерживает подсветку синтаксиса. Чтобы активировать её, просто добавьте расширение файла на языке, который вы хотите использовать, сразу после открывающего блока с тройными кавычками, ```js, и выделение синтаксиса будет автоматически применяться в выходном HTML. Например, чтобы применить подсветку синтаксиса к коду JavaScript:

```js
+grunt.initConfig({
+  assemble: {
+    options: {
+      assets: 'docs/assets',
+      data: 'src/data/*.{json,yml}',
+      helpers: 'src/custom-helpers.js',
+      partials: ['src/partials/**/*.{hbs,md}']
+    },
+    pages: {
+      options: {
+        layout: 'default.hbs'
+      },
+      files: {
+        './': ['src/templates/pages/index.hbs']
+      }
+    }
+  }
+};
+```
+

Преобразуется в:

grunt.initConfig({
+  assemble: {
+    options: {
+      assets: 'docs/assets',
+      data: 'src/data/*.{json,yml}',
+      helpers: 'src/custom-helpers.js',
+      partials: ['src/partials/**/*.{hbs,md}']
+    },
+    pages: {
+      options: {
+        layout: 'default.hbs'
+      },
+      files: {
+        './': ['src/templates/pages/index.hbs']
+      }
+    }
+  }
+};
+

Чтобы подсветка синтаксиса работала, нужно установить и включить плагин Highlight. Он, в свою очередь, использует плагин jquery, поэтому jquery также должен подключаться в вашем шаблоне.

Таблицы⚓︎

Таблицы создаются путем добавления вертикальных черточек в качестве разделителей между каждой ячейкой и добавления линий тире (также разделенных полосами) под заголовком. Обратите внимание, что вертикальные черточки не нужно выравнивать по вертикали.

| Параметр | Описание |
+| ------ | ----------- |
+| data   | путь к файлам данных для предоставления данных, которые будут переданы в шаблоны. |
+| engine | движок, который будет использоваться для обработки шаблонов. Handlebars по умолчанию. |
+| ext    | расширение, которое будет использоваться для файлов назначения. |
+

Преобразуется в:

Параметр Описание
data путь к файлам данных для предоставления данных, которые будут переданы в шаблоны.
engine движок, который будет использоваться для обработки шаблонов. Handlebars по умолчанию.
ext расширение, которое будет использоваться для файлов назначения.

И такой HTML:

<table>
+  <thead>
+    <tr>
+      <th>Параметр</th>
+      <th>Описание</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>data</td>
+      <td>путь к файлам данных для предоставления данных, которые будут переданы в шаблоны.</td>
+    </tr>
+    <tr>
+      <td>engine</td>
+      <td>движок, который будет использоваться для обработки шаблонов. Handlebars по умолчанию.</td>
+    </tr>
+    <tr>
+      <td>ext</td>
+      <td>расширение, которое будет использоваться для файлов назначения.</td>
+    </tr>
+  </tbody>
+</table>
+

Текст с выравниванием по правому краю⚓︎

Добавление двоеточия справа от тире под любым заголовком выравнивает текст этого столбца по правому краю.

| Параметр | Описание |
+| ------:| -----------:|
+| data   | путь к файлам данных для предоставления данных, которые будут переданы в шаблоны. |
+| engine | движок, который будет использоваться для обработки шаблонов. Handlebars по умолчанию. |
+| ext    | расширение, которое будет использоваться для файлов назначения. |
+
Параметр Описание
data путь к файлам данных для предоставления данных, которые будут переданы в шаблоны.
engine движок, который будет использоваться для обработки шаблонов. Handlebars по умолчанию.
ext расширение, которое будет использоваться для файлов назначения.

Ссылки⚓︎

Обычная ссылка⚓︎

[Assemble](https://assemble.io)
+

Рендерится так:

Assemble

HTML:

<a href="https://assemble.io">Assemble</a>
+

Добавление подсказки при наведении⚓︎

[Upstage](https://github.com/upstage/ "Visit Upstage!")
+

Наведите курсор на ссылку, должна появиться подсказка:

Upstage

HTML:

<a href="https://github.com/upstage/" title="Visit Upstage!">Upstage</a>
+

Именованные якоря⚓︎

Именованные привязки позволяют перейти к указанной точке привязки на той же странице. Например, каждая из этих глав:

# Table of Contents
+  * [Chapter 1](#chapter-1)
+  * [Chapter 2](#chapter-2)
+  * [Chapter 3](#chapter-3)
+

ведёт к соответствующим заголовкам на странице:

## Chapter 1 <a id="chapter-1"></a>
+Content for chapter one.
+
+## Chapter 2 <a id="chapter-2"></a>
+Content for chapter one.
+
+## Chapter 3 <a id="chapter-3"></a>
+Content for chapter one.
+

Конкретное размещение тега привязки кажется произвольным. Они размещены здесь встроенными, так как это кажется ненавязчивым, и это работает.

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

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

![Minion](https://octodex.github.com/images/minion.png)
+
Minion

или:

![Alt text](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat")
+
Alt text

Как и ссылки, изображения также имеют синтаксис стиля сносок:

![Alt text][id]
+
Alt text

Со ссылкой позже в документе, определяющем расположение URL:

[id]: https://octodex.github.com/images/dojocat.jpg  "The Dojocat"
+
\ No newline at end of file diff --git a/content/media/index.html b/content/media/index.html new file mode 100644 index 00000000..9b1e622c --- /dev/null +++ b/content/media/index.html @@ -0,0 +1,134 @@ + Медиа - Документация Grav CMS на русском

Медиа⚓︎

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

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

Поддерживаемые медиафайлы⚓︎

Следующие типы медиафайлов изначально поддерживаются Grav. Дополнительная поддержка мультимедийных файлов и потоковых вставок может быть добавлена ​​через плагины.

Тип медиа Тип файла
Изображения jpg, jpeg, png
Аудио mp3, wav, wma, ogg, m4a, aiff, aif
Анимированные изображения gif
Векторные изображения svg
Видео mp4, mov, m4v, swf, flv, webm, ogv
Данные / Информация txt, doc, docx, html, htm, pdf, zip, gz, 7z, tar, css, js, json, xml, xls, xlt, xlm, xlsm, xld, xla, xlc, xlw, xll, ppt, pps, rtf, bmp, tiff, mpeg, mpg, mpe, avi, wmv

Полный список поддерживаемых типов MimeType можно найти в файле system/config/media.yaml. Если есть тип mime, который в настоящее время не поддерживается, вы можете просто создать свой собственный user/config/media.yaml и добавить его туда. Просто убедитесь, что вы используете тот же формат, что и исходный файл system. Самый простой подход — скопировать весь исходный файл и внести необходимые изменения.

Месторасположение медиафайлов⚓︎

Обычно вы используете мультимедийный файл на странице, поэтому просто поместите файл в папку страницы, и вы можете ссылаться на него в разметке страницы, например:

![my image](image.jpg)
+

Если вы хотите поместить все изображения в одну папку, вы можете поместить их в папку user/pages/images. Таким образом, в Twig вы сможете связаться с ними через:

{% set my_image = page.find('/images').media['my-image.jpg'] %}
+

а также вы можете легко найти их с помощью Markdown и выполнить с ними операции:

![my image](/images/my-image.jpg?cropResize=300,300)
+

В качестве альтернативы вы можете поместить их в свою тему, так как это легко доступно через ссылки CSS или из файла разметки с помощью потока theme://:

![my image](theme://images/theme-image.jpg)
+

Другой вариант - user/images, где вы можете использовать поток image:// для доступа к ним:

![my image](image://my-image.jpg)
+

Фактически вы можете использовать любой поток, включая любую папку внутри user/ через поток user://:

![my image](user://themes/mytheme/images/my-image.jpg)
+

Вы также можете делать то же самое с помощью объекта Twig Media:

{{ media['user://themes/mytheme/images/my-image.jpg'].html()|raw }}
+

В Grav есть папка /images. Не помещайте в эту папку свои собственные изображения, поскольку в ней хранятся автоматически сгенерированные Grav кэшированные изображения.

Вы также можете поместить все медиафайлы в отдельную папку, чтобы все они были доступны за один раз. Например, вы можете захотеть сохранить все свои MP3-файлы в папке user/pages/mp3s (не отображается) и поместить имя MP3-файла, связанного с определенной страницей, в поле заголовка, называемое thistrack. Если вы затем захотите получить доступ к файлу для определенной страницы и воспроизвести его с помощью аудиоэлемента HTML5, вам понадобится следующий код:

<audio controls>
+  <source src="{{ page.find('/mp3s').media[page.header.thistrack~'.mp3']|e }}">
+</audio>
+

Режимы отображения⚓︎

Grav предоставляет несколько различных режимов отображения для каждого типа медиа-объекта.

Режим Объяснение
source Визуальное представление самого носителя, то есть фактического изображения, видео или файла
text Текстовое представление медиа
thumbnail Миниатюра для этого медиа-объекта

Носители типа Data/Information не поддерживают режим «источник», по умолчанию они будут использовать режим text, если другой режим не выбран явно.

Расположение эскиза⚓︎

Grav будет искать ваши эскизы в трех местах.

  1. В той же папке, что и мультимедийный файл: [media-name].[media-extension].thumb.[thumb-extension] где media-name и media-extension - это соответственно имя и расширение исходного медиафайла, а thumb-extension - это любое расширение, поддерживаемое типом медиафайла image. Примеры: my_video.mp4.thumb.jpg и my-image.jpg.thumb.png. Только для изображений! Сама картинка будет использована в качестве эскиза.
  2. Ваша пользовательская папка: user/images/media/thumb-[media-extension].png, где media-extension - это расширение исходного медиафайла. Примеры: thumb-mp4.png и thumb-jpg.jpg.
  3. Системная папка: system/images/media/thumb-[media-extension].png, где media-extension - это расширение исходного медиафайла. Эскизы в системных папках предоставлены Grav заранее.

Вы также можете вручную выбрать нужный эскиз с помощью действий, описанных ниже.

Ссылки и лайтбоксы⚓︎

Вышеупомянутые режимы отображения также можно использовать в сочетании со ссылками и лайтбоксов, которые будут объяснены более подробно позже. Однако важно отметить следующее:

Grav не предоставляет функциональность лайтбоксов из коробки, для этого вам понадобится плагин. Для этого вы можете использовать плагин FeatherLight.

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

Атрибут Объяснение
rel Простой индикатор того, что это не обычная ссылка, а ссылка лайтбокса. Значение всегда будет lightbox.
href URL-адрес самого медиаобъекта.
data-width Ширина, которую пользователь запросил для этого лайтбокса.
data-height Высота, которую пользователь запросил для этого лайтбокса.
data-srcset В случае графических носителей это содержит строку srcset. (Дополнительная информация)

Общие действия⚓︎

Grav использует паттерн Строитель при работе с медиа, поэтому вы можете выполнять несколько действий с определённым медиа. Некоторые действия доступны для каждого вида среды, в то время как другие зависят от конкретной среды.

Эти действия доступны для всех типов медиа.

url⚓︎

Этот метод предназначен только для использования в шаблонах Twig, отсюда отсутствие синтаксиса Markdown.

Это возвращает необработанный URL-путь к медиа.

{{ page.media['sample-image.jpg'].url|e }}
+
/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg
+

html⚓︎

В Markdown этот метод неявно вызывается при использовании синтаксиса ![].

Действие html выведет действительный HTML-тег для мультимедиа в зависимости от текущего режима отображения.

![Some ALT text](sample-image.jpg?classes=myclass "My title")
+
{{ page.media['sample-image.jpg'].html('My title', 'Some ALT text', 'myclass')|raw }}
+
<img title="My title" alt="Some ALT text" class="myclass" src="/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg" />
+

display⚓︎

Используйте это действие для переключения между различными режимами отображения, которые предоставляет Grav. Как только вы переключите режим отображения, все предыдущие действия будут сброшены. Исключениями из этого правила являются действия lightbox и link, а также любые действия, которые использовались до этих двух.

Например, эскиз, полученный в результате вызова page.media['sample-image.jpg'].sepia().display('thumbnail').html(), не будет иметь примененного действия sepia(), но page.media['sample-image.jpg'].display('thumbnail').sepia().html() будет применено действие sepia().

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

Превратите свой медиа-объект в ссылку. Все действия, которые вы вызываете до link(), будут применены к цели ссылки, в то время как любые действия, вызываемые после, будут применены к тому, что отображается на вашей странице.

После вызова link(), Grav автоматически переключит режим отображения на thumbnail.

В следующем примере будет отображена текстовая ссылка (display('text')) на версию файла sample-image.jpg сепии:

![Image link](sample-image.jpg?sepia&link&display=text)
+
{{ page.media['sample-image.jpg'].sepia().link().display('text').html('Image link')|raw }}
+
<a href="/images/3/7/7/1/c/3771c3fabb6d7bc0035dd119281718f9143c4653-sample-image.jpg"><img title="Image link" alt="" src="/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg" /></a>
+

Только Cache⚓︎

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

Включите cache_all в system/config/system.yaml

images:
+  default_image_quality: 85
+  cache_all: false
+

Отключите манипуляцию с изображениями с помощью параметра cache.

![](sample-image.jpg?cache)
+
{{ page.media['sample-image.jpg'].cache.html()|raw }}
+
<img alt="" src="/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg" />
+

Действие лайтбокса по сути такое же, как действие ссылки, но с некоторыми дополнениями. Как объяснялось выше (Ссылки и лайтбоксы), действие лайтбокса не будет делать ничего, кроме создания ссылки с некоторыми дополнительными атрибутами. Он отличается от действия ссылки тем, что добавляет атрибут rel="lightbox" и принимает атрибуты width и height.

Если возможно (в настоящее время только в случае изображений), Grav изменит размер вашего мультимедиа до требуемой ширины и высоты. В противном случае он просто добавит к ссылке атрибуты data-width и data-height.

![Sample Image](sample-image.jpg?lightbox=600,400&resize=200,200)
+
{{ page.media['sample-image.jpg'].lightbox(600,400).resize(200,200).html('Sample Image')|raw }}
+
<a rel="lightbox" data-width="600" data-height="400" href="/images/b/5/e/b/3/b5eb31744b96349b1a711697692b897624202cb1-sample-image.jpg"><img title="Sample Image" alt="" src="/images/4/5/5/e/4/455e41587c2cd25f34cfdccd8ab5078707aabe6b-sample-image.jpg" /></a>
+
Результат:⚓︎

Sample Image

thumbnail⚓︎

Вручную выберите миниатюру, которую должен использовать Grav. Вы можете выбрать между page и default для любого типа медиа, а также media для графических медиа, если вы хотите использовать сам медиаобъект в качестве миниатюры.

![Sample Image](sample-image.jpg?thumbnail=default&display=thumbnail)
+
{{ page.media['sample-image.jpg'].thumbnail('default').display('thumbnail').html('Sample Image')|raw }}
+
<img title="Sample Image" alt="" src="/system/images/media/thumb-jpg.png" />
+
Результат:⚓︎

Sample Image

attribute⚓︎

Это добавляет дополнительный атрибут HTML к выходным данным.

![Sample Image](sample-image.jpg?attribute=myattribute,myvalue)
+
{{ page.media['sample-image.jpg'].attribute('myattribute', 'myvalue').html('Sample Image')|raw }}
+
<img myattribute="myvalue" title="Sample Image" alt="" src="/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg" />
+

decoding⚓︎

Атрибуция декодирования изображений дает авторам возможность контролировать, когда браузер должен начать декодирование ресурса. Значением атрибута декодирования может быть одно из следующих значений: auto (по умолчанию), sync, async. Значение может быть установлено в system.images.defaults.decoding как значение по умолчанию или для каждого изображения md с ?decoding=async Если выбрано значение auto, атрибут decoding не добавляется, и браузер сам определит, какую стратегию использовать.

![Sample Image](sample-image.jpg?decoding=async)
+
{# Использование значения по умолчанию, как определено в 'config.system.images.defaults.decoding' #}
+{{ page.media['sample-image.jpg'].decoding('async').html('Sample Image')|raw }}
+
<img decoding="async" title="Sample Image" alt="" src="/images/e/f/1/0/5/ef10554cd3a99f2e65136e79dce170d4f8a7a1b9-sample-image.jpg" />
+

Действия с изображениями⚓︎

resize⚓︎

Изменение размера делает именно то, что вы ожидаете. resize позволяет вам создать новое изображение на основе «ширины» и «высоты». Соотношение сторон сохраняется, и новое изображение будет содержать пустые области необязательного цвета фона, представленного как «шестнадцатеричное значение», например 0xffffff. Параметр фона является необязательным, и, если он не указан, по умолчанию будет установлено значение прозрачное, если изображение в формате PNG, или белое, если оно в формате JPEG.

![Sample Image](sample-image.jpg?resize=400,200)
+
{{ page.media['sample-image.jpg'].resize(400, 200).html()|raw }}
+
Результат:⚓︎

Sample Image

forceResize⚓︎

Изменяет размер изображения на ширину и высоту, как указано. forceResize не будет учитывать исходное соотношение сторон и растянет изображение по мере необходимости, чтобы оно соответствовало новому размеру изображения.

![Sample Image](sample-image.jpg?forceResize=200,300)
+
{{ page.media['sample-image.jpg'].forceResize(200, 300).html()|raw }}
+
Результат:⚓︎

Sample Image

cropResize⚓︎

cropResize изменяет размер изображения до меньшего или большего размера в зависимости от ширины и высоты. Соотношение сторон сохраняется, и размер нового изображения будет изменен, чтобы поместиться в ограничивающей рамке, как описано с помощью предоставленных width и height. Другими словами, любая область фона, которую вы видите при обычном изменении размера, обрезается.

Например, если у вас есть изображение размером 640 x 480 и вы выполняете над ним действие cropResize(100, 100), вы получите изображение размером 100 x75.

![Sample Image](sample-image.jpg?cropResize=300,300)
+
{{ page.media['sample-image.jpg'].cropResize(300, 300).html()|raw }}
+
Результат:⚓︎

Sample Image

crop⚓︎

crop не изменит размер изображения вообще, он просто обрежет исходное изображение так, чтобы только часть ограничивающего прямоугольника, описываемая значениями width и height, происходила из местоположений x и y и использовалась для создания нового изображения.

Например, изображение размером 640 x 480 с crop(0, 0, 400, 100) создаст изображение шириной 400 и высотой 100, исходящее из левого верхнего угла (0, 0).

![Sample Image](sample-image.jpg?crop=100,100,300,200)
+
{{ page.media['sample-image.jpg'].crop(100,100,300,200).html()|raw }}
+
Результат:⚓︎

Sample Image

cropZoom⚓︎

Подобно обычному cropResize, cropZoom также принимает значения width и height, но изменяет размер и обрезает изображение, чтобы в результате был получен именно тот размер, который вы запрашивали. Соотношение сторон сохраняется, но части изображения могут быть обрезаны, однако результирующее изображение будет центрировано.

Основное различие между cropResize и cropZoom заключается в том, что в параметре cropResize размер изображения изменяется с сохранением соотношения сторон, так что отображается всё изображение, а любое дополнительное пространство считается фоном.

При использовании cropZoom размер изображения изменяется так, что фон не виден, а дополнительная область изображения за пределами нового размера изображения обрезается.

Например, если у вас есть изображение размером 640 x480 и вы выполняете действие cropZoom(400, 100), результирующее изображение будет изменено до 400 x 300, а затем будет обрезана высота. В результате получается изображение 400 x 100.

![Sample Image](sample-image.jpg?cropZoom=600,200)
+
{{ page.media['sample-image.jpg'].cropZoom(600,200).html()|raw }}
+

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

Результат:⚓︎

Sample Image

quality⚓︎

Динамически позволяет установить значение процента сжатия для изображения от 0 до 100. Меньшее число означает меньшее качество, где 100 означает максимальное качество.

![Sample Image](sample-image.jpg?cropZoom=300,200&quality=25)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).quality(25).html()|raw }}
+
Результат:⚓︎

Sample Image

negate⚓︎

Применяет отрицательный фильтр к изображению с инвертированными цветами.

![Sample Image](sample-image.jpg?cropZoom=300,200&negate)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).negate.html()|raw }}
+
Результат:⚓︎

Sample Image

brightness⚓︎

Применяет фильтр яркости к изображению со значением от -255 до +255. Большие отрицательные числа сделают изображение темнее, а большие положительные числа сделают изображение ярче.

![Sample Image](sample-image.jpg?cropZoom=300,200&brightness=-100)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).brightness(-100).html()|raw }}
+
Результат:⚓︎

Sample Image

contrast⚓︎

Это применяет фильтр контраста к изображению со значением от -100 до +100. Большие отрицательные числа увеличивают контраст, а большие положительные числа уменьшают контраст.

![Sample Image](sample-image.jpg?cropZoom=300,200&contrast=-50)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).contrast(-50).html()|raw }}
+
Результат:⚓︎

Sample Image

grayscale⚓︎

Это обрабатывает изображение с помощью фильтра оттенков серого.

![Sample Image](sample-image.jpg?cropZoom=300,200&grayscale)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).grayscale.html()|raw }}
+
Результат:⚓︎

Sample Image

emboss⚓︎

Это обрабатывает изображение с помощью фильтра тиснения.

![Sample Image](sample-image.jpg?cropZoom=300,200&emboss)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).emboss.html()|raw }}
+
Результат:⚓︎

Sample Image

smooth⚓︎

Это применяет фильтр сглаживания к изображению на основе параметра сглаживания value от -10 до 10.

![Sample Image](sample-image.jpg?cropZoom=300,200&smooth=5)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).smooth(5).html()|raw }}
+
Результат:⚓︎

Sample Image

sharp⚓︎

Это применяет фильтр повышения резкости к изображению.

![Sample Image](sample-image.jpg?cropZoom=300,200&sharp)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).sharp.html()|raw }}
+
Результат:⚓︎

Sample Image

edge⚓︎

Это применяет фильтр обнаружения краев к изображению.

![Sample Image](sample-image.jpg?cropZoom=300,200&edge)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).edge.html()|raw }}
+
Результат:⚓︎

Sample Image

colorize⚓︎

Вы можете раскрасить изображение на основе настройки значений red, green и blue для изображения от -255 до +255 для каждого цвета.

![Sample Image](sample-image.jpg?cropZoom=300,200&colorize=100,-100,40)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).colorize(100,-100,40).html()|raw }}
+
Результат:⚓︎

Sample Image

sepia⚓︎

Это применяет фильтр сепии к изображению для создания винтажного вида.

![Sample Image](sample-image.jpg?cropZoom=300,200&sepia)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).sepia.html()|raw }}
+
Результат:⚓︎

Sample Image

gaussianBlur⚓︎

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

![Sample Image](sample-image.jpg?gaussianBlur=3)
+
{{ page.media['sample-image.jpg'].gaussianBlur(3).html()|raw }}
+
Результат:⚓︎

Sample Image

rotate⚓︎

Поворачивает изображение на заданный угол против часовой стрелки, отрицательные значения вращают по часовой стрелке.

![Sample Image](sample-image.jpg?cropZoom=300,200&rotate=-90)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).rotate(-90).html()|raw }}
+
Результат:⚓︎

Sample Image

flip⚓︎

Переворачивает изображение в заданном направлении. Оба параметра могут иметь значение 0|1. Оба значения 0 эквивалентны отсутствию переворачивания в любом направлении.

![Sample Image](sample-image.jpg?cropZoom=300,200&flip=0,1)
+
{{ page.media['sample-image.jpg'].cropZoom(300,200).flip(0,1).html()|raw }}
+
Результат:⚓︎

Sample Image

fixOrientation⚓︎

Исправляет ориентацию изображения при повороте через данные EXIF ​​(применимо к изображениям jpeg, снятым с помощью телефонов и камер).

![Sample Image](sample-image.jpg?fixOrientation)
+
{{ page.media['sample-image.jpg'].fixOrientation().html()|raw }}
+

loading⚓︎

Атрибут loading на изображениях дает авторам контроль над тем, когда браузер должен начать загрузку ресурса. Значение этого атрибута может быть одним из следующих auto (по умолчанию), lazy, eager. Значение может быть установлено в system.images.defaults.load в качестве значения по умолчанию, или в качестве значения для изображения в разметке Markdown с помощью параметра ?loading=lazy Когда выбрано значение auto, атрибут loading не добавляется и браузер определит, какую стратегию использовать.

![Sample Image](sample-image.jpg?loading=lazy)
+
{# Использование значения по умолчанию, как определено в 'config.system.images.defaults.loading' #}
+{{ page.media['sample-image.jpg'].loading.html('Sample Image')|raw }}
+
+{# Использование явного значения #}
+{{ page.media['sample-image.jpg'].loading('lazy').html('Sample Image')|raw }}
+
<img loading="lazy" title="Sample Image"  src="/images/e/f/1/0/5/ef10554cd3a99f2e65136e79dce170d4f8a7a1b9-sample-image.jpg" />
+

Действия с объектами⚓︎

resize⚓︎

Поскольку PHP не может обрабатывать динамическое изменение размера этих типов носителей, действие resize будет только гарантировать, что атрибут width и height или data-width и data-height установлены в вашем теге <img>/<video> или <a> соответственно. Это означает, что ваше изображение или видео будет отображаться в требуемом размере, но фактическое изображение или видеофайл не будут преобразованы каким-либо образом.

![Sample Trailer](sample-trailer.mov?resize=400,200)
+
{{ page.media['sample-trailer.mov'].resize(400, 200).html('Sample Trailer') }}
+
<video controls="1" style="width: 400px;height: 200px;" title="Sample Trailer" alt=""><source src="/user/pages/02.content/07.media/sample-trailer.mov?loading=auto">Your browser does not support the video tag.</video>
+

Примеры⚓︎

Некоторые примеры этого:

![Sample Vector](sample-vector.svg?resize=300,300)
+

Sample Vector

![Animated Gif](sample-animated.gif?resize=300,300)
+

Animated Gif

![Sample Trailer](sample-trailer.mov?resize=400,200)
+

Действия с аудио⚓︎

Аудио медиа будет отображать аудио ссылку HTML5:

![Hal 9000: I'm Sorry Dave](hal9000.mp3)
+
{{ page.media['hal9000.mp3'].html()|raw }}
+
Результат:⚓︎

controls⚓︎

Позволяет явно устанавливать или удалять элементы управления HTML5 по умолчанию. Передача 0 скрывает элементы управления браузером для воспроизведения, громкости и т. д.

![Hal 9000: I'm Sorry Dave](hal9000.mp3?controls=0)
+
{{ page.media['hal9000.mp3'].controls(0)|raw }}
+
<audio controls="0" title="Hal 9000: I'm Sorry Dave"><source src="pages/02.content/07.media/hal9000.mp3">Your browser does not support the audio tag.</audio>
+

preload⚓︎

Отвечает за предварительную загрузку контента, по умолчанию auto. Допустимые параметры: auto, metadata и none.

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

Атрибут preload игнорируется, если присутствует autoplay.

![Hal 9000: I'm Sorry Dave](hal9000.mp3?preload=metadata)
+
{{ page.media['hal9000.mp3'].preload('metadata')|raw }}
+

autoplay⚓︎

Позволяет установить, будет ли аудио воспроизводиться автоматически при загрузке страницы. Если не задано, по умолчанию используется false.

Если в заданном элементе audio присутствуют и autoplay, и preload, preload игнорируется.

![Hal 9000: I'm Sorry Dave](hal9000.mp3?autoplay=1)
+
{{ page.media['hal9000.mp3'].autoplay(1)|raw }}
+

controlsList⚓︎

Позволяет установить свойство controlsList, которое принимает одно или несколько из трех возможных значений: nodownload, nofullscreen и noremoteplayback.

Если вы устанавливаете более одного параметра в markdown, разделяйте их тире (-). Они будут заменены пробелами в выходном HTML.

![Hal 9000: I'm Sorry Dave](hal9000.mp3?controlsList=nodownload-nofullscreen-noremoteplayback)
+
{{ page.media['hal9000.mp3'].controlsList('nodownload nofullscreen noremoteplayback')|raw }}
+

muted⚓︎

Позволяет установить, будет ли звук отключен при загрузке. Если не задано, по умолчанию используется false.

![Hal 9000: I'm Sorry Dave](hal9000.mp3?muted=1)
+
{{ page.media['hal9000.mp3'].muted(1)|raw }}
+

loop⚓︎

Позволяет установить, будет ли звук зацикливаться после завершения воспроизведения. Если не задано, по умолчанию используется false.

![Hal 9000: I'm Sorry Dave](hal9000.mp3?loop=1)
+
{{ page.media['hal9000.mp3'].loop(1)|raw }}
+

Действия с файлами⚓︎

На данный момент Grav не предоставляет никаких настраиваемых действий с файлами, и мы не планируем их добавлять. Если вы что-то придумаете, свяжитесь с нами.

[Текстовый файл](acronyms.txt)
+
<a href="{{ page.media['acronyms.txt'].url()|raw }}">Текстовый файл</a>
+
Результат:⚓︎

Текстовый файл

Комбинации⚓︎

Как видите: Grav предоставляет несколько мощных функций для работы с изображениями, которые упрощают работу с изображениями! Настоящая сила приходит, когда вы комбинируете несколько эффектов и производите очень сложные динамические манипуляции с изображениями. Например, это абсолютно верно:

![Sample Image](sample-image.jpg?negate&lightbox&cropZoom=200,200)
+
{{ page.media['sample-image.jpg'].negate.lightbox.cropZoom(200,200)|raw }}
+
Результат:⚓︎

Sample Image

Сброс нескольких вызовов на одно и то же изображение⚓︎

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

Чтобы бороться с этим, вы можете сбросить действия с изображениями, передав false методу url():

{% for item in page.header.gallery %}
+    {% set image = page.media[item.src].cropZoom(800, 600).quality(70) %}
+    <a href="{{ image.url(false) }}">
+      <img src="{{ image.url }}" alt="{{ item.alt }}" title="{{ item.title }}" />
+    </a>
+{% endfor %}
+

Адаптивные изображения⚓︎

Дисплеи с более высокой плотностью⚓︎

Grav имеет встроенную поддержку отзывчивых изображений для дисплеев с более высокой плотностью (например, экранов Retina). Grav выполняет это с помощью атрибута srcset в HTML элементе изображения. Хорошая статья для чтения, если вы хотите лучше понять это, - сообщение в блоге Эрика Портиса.

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

Чтобы начать использовать адаптивные изображения, всё, что вам нужно сделать, это добавить на свои страницы изображения с более высокой плотностью, добавив суффикс к имени файла. Если вы предоставляете только изображения с более высокой плотностью, Grav автоматически сгенерирует для вас версии более низкого качества. Именование работает следующим образом: [image-name]@[density-ratio]x.[Image-extension], поэтому, например, добавление sample-image@3x.jpg на вашу страницу приведет к тому, что Grav создаст 2x и версию 1x (обычного размера) по умолчанию.

Эти файлы, созданные Grav, будут храниться в папке кэша images/, а не в папке вашей страницы.

Предположим, у вас есть файл с именем retina@2x.jpg, вы на самом деле укажете его в своих ссылках как retina.jpg, и тогда Grav не найдет это изображение и начнет искать размеры изображения. Он найдет retina@2x.jpg, а затем поймет, что ему нужно создать вариант @1x и отобразить соответствующий вывод srcset:

![Retina Image](retina.jpg?sizes=80vw)
+
{{ page.media['retina.jpg'].sizes('80vw').html()|raw }}
+
<img alt="Retina Image" src="/images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg" srcset="/images/b/a/c/1/9/bac199ed46f9188dafad759760afd27da935e564-retina2x.jpg 2880w, /images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg 1440w" sizes="80vw">
+
Результат:⚓︎

Retina Image

В зависимости от вашего дисплея и реализации вашего браузера и поддержки srcset, вы можете никогда не увидеть разницы.

Размеры с медиа-запросами⚓︎

Grav также поддерживает медиа-запросы внутри атрибута sizes, что позволяет использовать разную ширину в зависимости от размера экрана устройства. В отличие от первого метода, вам не нужно создавать несколько изображений; они будут созданы автоматически. Резервное изображение - это текущее изображение, поэтому браузер без поддержки srcset будет отображать исходное изображение.

![Retina Image](retina.jpg?sizes=%28max-width%3A26em%29+100vw%2C+50vw)
+
{{ page.media['retina.jpg'].sizes('(max-width:26em) 100vw, 50vw').html('Retina Image')|raw }}
+
<img alt="Retina Image" src="/images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg" srcset="/images/b/a/c/1/9/bac199ed46f9188dafad759760afd27da935e564-retina2x.jpg 2880w, /images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg 1440w" sizes="(max-width:26em)+100vw">
+
Результат:⚓︎

Retina Image

В зависимости от вашего дисплея и реализации вашего браузера и поддержки srcset, вы можете никогда не увидеть разницы.

Размеры с медиа-запросами с использованием производных⚓︎

Если вы хотите настроить размеры автоматически созданных файлов, вы можете использовать метод derivatives() (как показано ниже). Первый параметр — это ширина наименьшего из сгенерированных изображений. Второй — это максимальная ширина генерируемых изображений. Третий и единственный необязательный параметр определяет интервалы, с которыми будут создаваться фотографии (по умолчанию-200). Например, если вы установите первый параметр равным 320, а третий — 100, Grav будет генерировать изображение для 320, 420, 520, 620 и так далее, пока не достигнет установленного максимума.

В нашем примере мы установили максимум в 1600. В результате будет достигнуто увеличение на 300 с 320 до 1520, так как 1620 будет выше порога.

На данный момент он не работает внутри markdown, только в ваших файлах twig.

![Retina Image](retina.jpg?derivatives=320,1600,300&sizes=%28max-width%3A26em%29+100vw%2C+50vw)
+
{{ page.media['retina.jpg'].derivatives(320,1600,300).sizes('(max-width:26em) 100vw, 50vw').html()|raw }}
+
<img alt="Retina Image" src="/images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg" srcset="/images/b/a/c/1/9/bac199ed46f9188dafad759760afd27da935e564-retina2x.jpg 2880w, /images/d/c/e/f/7/dcef77ec0cc8efd0a66851a7750b530d8bfe093a-retina320w.jpg 320w, /images/1/5/d/a/1/15da17d9989ac18738474b1fab5ff6104b96be41-retina620w.jpg 620w, /images/e/c/e/3/f/ece3fa30474b851808a485197b481d202d8f3811-retina920w.jpg 920w, /images/3/8/8/2/4/3882463d358fc22a189380da7b7d14db2a5b260a-retina1220w.jpg 1220w, /images/6/0/5/0/e/6050e7409d6040b3737b6562cdec89854cac3f9a-retina1520w.jpg 1520w, /images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg 1440w" sizes="(max-width:26em)+100vw">
+
Результат:⚓︎

Retina Image

В зависимости от вашего дисплея и реализации и поддержки srcset вашего браузера, вы, возможно, никогда не увидите разницы. Мы включили HTML-разметку в четвертую вкладку, чтобы вы могли видеть, что происходит за экранами.

Ручное определение размера⚓︎

Вместо того чтобы позволить Grav генерировать размеры в четных шагах между заданными границами, вы можете вручную определить, какие размеры Grav должен генерировать:

![Retina Image](retina.jpg?derivatives=[360,720,1200])
+

Это сгенерирует уменьшенные версии изображения retina.jpg с разной шириной: 360, 720 и 1200px.

Метафайлы⚓︎

Каждый файл, на который вы ссылаетесь в Grav, например image1.jpg, sample-trailer.mov, или даже archive.zip имеет возможность устанавливать переменные или даже переопределять их с помощью мета-файла. Эти файлы принимают формат <filename>.meta.yaml. Например, для изображения с именем файла image1.jpg можно создать метафайл image1.jpg.meta.yaml.

С помощью этого метода вы можете добавить практически любой параметр или кусочек метаданных.

Содержимое этого файла должно быть в синтаксисе YAML, примером может быть:

image:
+  filters:
+    default:
+      - [cropResize, 300, 300]
+      - sharp
+alt_text: My Alt Text
+

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

Допустим, вы хотели просто вытащить значение alt_text, указанное для файла изображения sample-image.jpg. Затем вы создаете файл под названием sample-image.jpg.meta.yaml и помещаете его в папку с файлом изображения, на который есть ссылка. Затем вставьте данные, использованные в примере выше, и сохраните этот YAML-файл. В файле Markdown для страницы эти данные можно отобразить, используя следующую строку:

{{ page.media['sample-image.jpg'].meta.alt_text }}
+

При этом вместо изображения будет вытаскиваться пример фразы My Alt Text. Это всего лишь простой пример. Вы можете использовать этот метод для ряда вещей, включая создание галереи с несколькими уникальными точками данных, на которые вы хотите ссылаться для каждого изображения. Ваши изображения, по сути, имеют набор уникальных для них данных, на которые можно легко ссылаться и вытягивать по мере необходимости.

Параметры видео⚓︎

Встроенные опции управления видео — это ещё одна из имеющихся возможностей Grav. Эти опции, добавленные в строку с именем файла, дают вам возможность определить настройки autoplay, controls и loop.

Вот пример:

![video.mov](video.mov?loop=1&controls=0&autoplay=1&muted)
+

Опции следующие:

Атрибут Объяснение
autoplay Включает (1) или отключает (0) автоматическое воспроизведение видео при загрузке страницы.
controls Включает (1) или отключает (0) управление мультимедиа для встроенного видео.
loop Включает (1) или отключает (0) автоматическое петлевание для видео, проигрывая его по окончании.
muted Отключите видео и, как правило, разрешите его воспроизведение в автоматическом режиме.
\ No newline at end of file diff --git a/content/modular/index.html b/content/modular/index.html new file mode 100644 index 00000000..3d5a15e5 --- /dev/null +++ b/content/modular/index.html @@ -0,0 +1,36 @@ + Модульные страницы - Документация Grav CMS на русском

Модульные страницы⚓︎

Концепция модульных страниц сначала немного сложна для понимания, но когда вы с этим справитесь, вы увидите, насколько удобны они в использовании. Модульная страница — это набор страниц, уложенных друг на друга для создания единой страницы. Это позволяет создавать сложную структуру страниц, используя подход кирпичиков LEGO — и кто не любит LEGO?!

Что такое модульные страницы и чем они не являются?⚓︎

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

На обычной странице по адресу domain.com/books есть подробная информация о том, какие книги продаются. Для этой страницы существует несколько дочерних страниц, например domain.com/books/gullivers-travels и domain.com/books/the-hobbit. Их папки названы так же, как и адрес, который отображает Grav: /pages/books, /pages/books/gullivers-travels и /pages/books/the-hobbit. Эта структура не будет работать на модульной странице.

Модульная страница не имеет дочерних страниц в том же смысле, скорее у нее есть модули, которые составляют части страницы. Таким образом, вместо различных книг, расположенных под страницей верхнего уровня, модульная страница отображает свои модули на той же странице. «Путешествия Гулливера» и «Хоббит» появляются в domain.com/books с путями /pages/books/_gullivers-travels и /pages/books/_the-hobbit. Таким образом, модульные страницы не совместимы напрямую с обычными страницами и имеют свою собственную структуру.

Пример структуры папки⚓︎

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

Модульная страница состоит из страниц, которые существуют во вложенных папках, находящихся в основной папке страницы. В случае нашего одностраничного скелета эта страница находится в папке 01.home. В этой папке находится единственный файл modular.md, который сообщает Grav, какие подстраницы нужно использовать для сборки модульной страницы и в каком порядке их отображать. Имя этого файла важно, потому что оно указывает Grav использовать modular.html.twig — шаблон из текущей темы для рендеринга страницы.

Эти подстраницы находятся в папках, имена которых начинаются с символа подчеркивания (_). Используя подчеркивание, вы сообщаете Grav, что это модули, а не отдельные страницы. Например, папки-подстраницы могут называться _features или _showcase. Эти страницы не маршрутизируемы — на них нельзя указывать непосредственно в браузере, и они не видны — они не отображаются в меню.

В случае нашего одностраничного скелета мы создали структуру папок, показанную ниже.

Листинг

Каждая подпапка содержит файл Markdown, который действует как страница.

Данные в этих папках модулей, включая файлы Markdown, изображения и т. д., затем извлекаются и отображаются на странице Modular. Это достигается путем создания первичной страницы, определения Коллекции страниц в блоке метаданных YAML первичной страницы, а затем повторения этой коллекции в шаблоне Twig для создания объединенной HTML-страницы. В теме уже должен быть шаблон modular.html.twig, который будет делать это и будет использоваться при создании типа модульной страницы. Вот простой пример из modular.html.twig:

{% for module in page.collection() %}
+    {{ module.content }}
+{% endfor %}
+

Вот пример полученной модульной страницы с выделением различных используемых модульных папок.

Листинг

Настройка основной страницы⚓︎

Как видите, каждый раздел извлекает контент из разных папок модуля. Определение того, какие папки модуля используются и в каком порядке, происходит в первичном файле Markdown в родительской папке модуля. Вот содержимое файла modular.md в папке 01.home.

---
+title: One Page Demo Site
+menu: Home
+onpage_menu: true
+body_classes: "modular header-image fullwidth"
+
+content:
+    items: '@self.modular'
+    order:
+        by: default
+        dir: asc
+        custom:
+            - _showcase
+            - _highlights
+            - _callout
+            - _features
+---
+

Как видите, в этом файле нет фактического содержимого. Всё обрабатывается в YAML FrontMatter в шапке. Здесь находятся Заголовок страницы, Меню и другие настройки, которые можно найти на обычной странице. Параметр Content инструктирует Grav создавать контент на основе коллекции модульных страниц и даже предоставляет настраиваемый ручной порядок их рендеринга.

Модули⚓︎

Листинг

Markdown-файл для каждого модуля может иметь свой собственный шаблон, настройки и т. д. Для всех целей и задач он имеет большинство функций и настроек обычной страницы, просто он не отображается как единое целое. Мы рекомендуем разместить настройки всей страницы, такие как taxonomy, в основном файле Markdown, который контролирует всю страницу.

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

---
+title: Homepage Callout
+image_align: right
+---
+
+## Content Unchained
+
+Вы больше не раб своей CMS. **Grav** дает вам возможность создавать что угодно: [простой одностраничный сайт](#), [красивый блог](#), мощный и многофункциональный [сайт продукта](#) или почти все, что вы можете придумать!
+

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

Файл шаблона для файла text.md должен находиться в папке /templates/modular вашей темы и называться text.html.twig. Этот файл, как и любой файл шаблона Twig для любой другой страницы, определяет настройки, а также любые различия в стилях между ним и базовой страницей.

<div class="modular-row callout">
+    {% set image = page.media.images|first %}
+    {% if image %}
+        {{ image.cropResize(400,400).html('','','align-'~page.header.image_align) }}
+    {% endif %}
+{{ content }}
+</div>
+

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

\ No newline at end of file diff --git a/content/modular/modular-explainer-1.jpg b/content/modular/modular-explainer-1.jpg new file mode 100644 index 00000000..4e5c4201 Binary files /dev/null and b/content/modular/modular-explainer-1.jpg differ diff --git a/content/modular/modular-explainer-2.jpg b/content/modular/modular-explainer-2.jpg new file mode 100644 index 00000000..bec572fc Binary files /dev/null and b/content/modular/modular-explainer-2.jpg differ diff --git a/content/modular/modular-explainer-3.jpg b/content/modular/modular-explainer-3.jpg new file mode 100644 index 00000000..44846fa5 Binary files /dev/null and b/content/modular/modular-explainer-3.jpg differ diff --git a/content/multi-language/index.html b/content/multi-language/index.html new file mode 100644 index 00000000..d793cb3b --- /dev/null +++ b/content/multi-language/index.html @@ -0,0 +1,113 @@ + Мультиязычность - Документация Grav CMS на русском

Мультиязычность⚓︎

Поддержка нескольких языков в Grav является прямым результатом обсуждения в сообществе по этой теме. Теперь разберем примеры того, как можно настроить свой сайт Grav на нескольких языках.

Один язык, отличный от английского⚓︎

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

languages:
+  translations: true
+  supported:
+    - ru
+

или в конфигурации системы в админке.

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

Основы мультиязычности⚓︎

Поскольку вы уже должны быть знакомы с тем, как Grav использует файлы разметки в папках для определения архитектурной структуры, а также для установки важных опций страницы и её содержимого, мы не будем углубляться в эту механику напрямую. Тем не менее, имейте в виду, что по умолчанию Grav ищет один файл .md в папке, представляющей страницу. При включенной мультиязычной поддержке Grav будет искать соответствующий языковой файл, например, default.en.md или default.ru.md.

Конфигурация языков⚓︎

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

languages:
+  supported:
+    - en
+    - ru
+

Предоставляя секцию languages со списком поддерживаемых языков, вы эффективно включаете поддержку нескольких языков в Grav.

В этом примере видно, что были описаны два поддерживаемых языка (en и ru). Это позволит вам поддерживать английский и русский языки.

Если язык не запрашивается явно (через URL или код), Grav будет использовать указанный порядок языков для выбора правильного языка. Итак, в приведенном выше примере языком по умолчанию является en или английский. Если бы у вас сначала был ru, русский язык был бы языком по умолчанию.

Конечно, можно предоставить столько языков, сколько захотите, и вы даже можете использовать локальные коды типа en-GB, en-US и ru-RU. Если вы используете это именование на основе локали, вам придется заменить все короткие языковые коды на локальные версии.

Многоязычные страницы⚓︎

По умолчанию в Grav каждая страница представлена одним файлом, например, default.md. Когда вы включите поддержку нескольких языков, Grav будет искать файл с соответствующим названием. Например, поскольку английский язык является нашим языком по умолчанию, Grav сначала будет искать файл default.en.md.

Если этот файл не найден, далее будет проверяться наличие файла default.ru.md. Если этот файл не будет найден, Grav запросит файл default.md для предоставления информации для страницы.

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

Если бы у нас были самые базовые Grav-сайты, с одним файлом 01.home/default.md, мы могли бы начать с переименования default.md в default.en.md, и его содержимое могло бы выглядеть так:

---
+title: Homepage
+---
+
+This is my Grav-powered homepage!
+

Затем вы можете создать новую страницу, расположенную в той же папке 01.home/ под названием default.ru.md с содержимым:

---
+title: Главная страница
+---
+
+Это моя домашняя страница на основе Grav!
+

Теперь вы определили две страницы для текущей домашней страницы на нескольких языках.

Если вы конвертируете существующий сайт для использования мультиязычности, вы можете альтернативно установить include_default_lang_file_extension: false, чтобы сохранить использование простого расширения файла .md для вашего основного языка. Читать далее...

Активный язык через URL-адрес⚓︎

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

http://yoursite.com/en
+

Для доступа к русской версии страницы используйте:

http://yoursite.com/ru
+

Если вы предпочитаете не использовать языковой префикс для языка по умолчанию, установите include_default_lang: false. Читать далее...

Активный язык через браузер⚓︎

Большинство браузеров позволяют настроить, на каких языках вы предпочитаете просматривать содержимое. Grav имеет возможность прочитать значение http_accept_language и сравнить его с текущими поддерживаемыми языками сайта, и если определённый язык не был обнаружен, показать вам содержимое на предпочтительном для вас языке.

Для этого вы должны включить опцию в вашем файле user/system.yaml в секции languages::

languages:
+  http_accept_language: false
+

Установка локали для активного языка⚓︎

Настройка булевых параметров установит метод PHP setlocale(), который контролирует такие вещи, как денежные значения, даты, сравнение строк, классификацию символов и другие специфические для локали настройки в соответствии с настройками активного языка. По умолчанию это значение установлено в false, а затем оно будет использовать системную локаль, если вы установите это значение в true, то оно переопределит локаль с текущим активным языком.

languages:
+   override_locale: false
+

Префикс языка по умолчанию⚓︎

По умолчанию код языка по умолчанию префиксован во всех URL. Например, если у вас есть поддержка английского и русского языков (en и ru), и по умолчанию английский. Маршрут страницы может выглядеть как /en/my-page на английском языке и /ru/ma-page на русском. Однако часто предпочтительнее иметь язык по умолчанию без префикса, так что вы можете просто установить этот параметр в false и страница на английском языке будет выглядеть как /my-page.

languages:
+    include_default_lang: false
+

Мультиязыковая маршрутизация⚓︎

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

Если бы у нас была следующая структура папок:

- 01.Animals
+  - 01.Mammals
+    - 01.Bats
+    - 02.Bears
+    - 03.Foxes
+    - 04.Cats
+  - 02.Reptiles
+  - 03.Birds
+  - 04.Insets
+  - 05.Aquatic
+

Это приведет к появлению таких URL, как http://yoursite.com/animals/mammals/bears. Это отлично подходит для английского сайта, но если вы хотите иметь русскую версию, вы предпочитаете, чтобы слаги были переведены соответствующим образом. Самый простой способ достичь этого — добавить пользовательский слаг для каждого файла страницы ru.md. Например, страница с млекопитающими может выглядеть как-то так:

---
+title: Млекопитающие
+slug: млекопитающие
+---
+
+Млекопитающие (класс Mammalia) - это таксон, входящий в отряд позвоночных, традиционный класс, определённый в классификации Линнея. Этот таксон считается монофилетическим...
+

Это в сочетании с соответствующими переопределяющими слагами в других файлах должно привести к URL http://yoursite.com/animaux/mammiferes/ours, который гораздо больше похож на русский!

Другим вариантом является использование новой поддержки маршрутов на уровне страниц и предоставление полного псевдонима маршрута для страницы.

Домашняя страница на английском языке⚓︎

Если вы переопределите маршрут/слаг для главной страницы, Grav не сможет найти главную страницу, как это определено вашей опцией home.alias в system.yaml. Он будет искать /homepage, а у вашей русской домашней страницы может быть маршрут /домашняя-страница.

Для поддержки мультиязычных домашних страниц в Grav появилась новая опция, которая может быть использована вместо home.alias и это простое home.aliases, и это может выглядеть примерно так:

home:
+  aliases:
+    en: /homepage
+    ru: /домашняя-страница
+

Таким образом, Grav знает, как добраться до главной страницы, если активным языком является английский или русский.

Языковые шаблоны Twig⚓︎

По умолчанию Grav использует имя файла Markdown для определения шаблона Twig, который будет использоваться для рендеринга. Например, default.ru.md будет искать Twig-файл под названием default.html.twig в соответствующих путях к Twig-шаблону текущей темы и любых плагинов, регистрирующих пути к Twig-шаблону. При использовании нескольких языков Grav также добавляет текущий активный язык в структуру пути. Это означает, что если вам нужен специальный языковой Twig-файл, вы можете просто поместить его в папку с языками корневого уровня. Например, если ваша текущая тема использует шаблон, расположенный в templates/default.html.twig, вы можете создать папку templates/ru/ и поместить туда ваш русский специфический Twig-файл: шаблоны/ru/default.html.twig.

Другая опция, которая требует ручной настройки, это переопределение параметра template: в заголовках страниц. Например:

template: default.ru
+

При этом будет искаться шаблон, расположенный в файле templates/default.ru.html.twig.

Это дает вам два варианта для предоставления языковых переопределений Twig.

Если не предоставлен шаблон Twig для конкретного языка, то будет использоваться шаблон по умолчанию.

Перевод через Twig⚓︎

Самый простой способ использовать эти строки перевода в ваших Twig-шаблонах — с помощью фильтра |t. Вы также можете использовать функцию t() Twig, но, честно говоря, фильтр чище и делает то же самое:

<h1 id="site-name">{{ "SITE_NAME"|t }}</h1>
+<section id="header">
+    <h2>{{ "HEADER.MAIN_TEXT"|t }}</h2>
+    <h3>{{ "HEADER.SUB_TEXT"|t }}</h3>
+</section>
+

При использовании функции Twig t() решение аналогично:

<h1 id="site-name">{{ t("SITE_NAME") }}</h1>
+<section id="header">
+    <h2>{{ t("HEADER.MAIN_TEXT") }}</h2>
+    <h3>{{ t("HEADER.SUB_TEXT") }}</h3>
+</section>
+

Ещё один новый фильтр/функция Twig позволяет выполнять переводы из массива. Это особенно полезно, если у вас есть список значений, таких как месяцы, года или дни недели. Например, скажем, у вас есть этот перевод:

en:
+  GRAV:
+    MONTHS_OF_THE_YEAR: [January, February, March, April, May, June, July, August, September, October, November, December]
+

Вы можете получить подходящий перевод для месяца поста следующим образом:

{{ 'GRAV.MONTHS_OF_THE_YEAR'|ta(post.date|date('n') - 1) }}
+

Вы также можете использовать это в качестве функции Twig с ta().

Переводы с переменными⚓︎

Вы также можете использовать переменные в ваших Twig-переводах, используя синтаксис PHP-функции sprintf:

SIMPLE_TEXT: There are %d monkeys in the %s
+

А затем вы можете заполнить эти переменные с помощью Twig:

{{ "SIMPLE_TEXT"|t(12, "Лондонском зоопарке") }}
+

в результате получается перевод:

В Лондонском зоопарке живут 12 обезьян
+

Комплексные переводы⚓︎

Иногда требуется выполнять сложные переводы с заменой на определённые языки. Вы можете использовать всю мощь метода translate() с помощью фильтра/функции tl. Например:

{{ ["SIMPLE_TEXT", 12, 'Лондонском зоопарке']|tl(['ru']) }}
+

Переведет строку SIMPLE_TEXT и заменит плейсхолдеры на 12 и Лондонском зоопарке соответственно. Также есть массив, переданный с переводами языков, чтобы попробовать в порядке первого поиска-первого использования. Результат будет выведен на русский язык:

В Лондонском зоопарке живут 12 обезьян
+

Переводы PHP⚓︎

Также как и Twig-фильтр и функции, вы можете использовать тот же подход в вашем Grav-плагине:

$translation = $this->grav['language']->translate(['HEADER.MAIN_TEXT']);
+

Вы также можете указать язык:

$translation = $this->grav['language']->translate(['HEADER.MAIN_TEXT'], 'ru');
+

Для перевода определенного элемента в использовании массива:

$translation = $this->grav['language']->translateArray('GRAV.MONTHS_OF_THE_YEAR', 3);
+

Перевод плагинов и тем⚓︎

Вы также можете предоставить свои собственные переводы в плагинах и темах. Это делается путем создания файла languages.yaml в корне вашего плагина или темы (например. /user/plugins/error/languages.yaml, или user/themes/antimatter/languages.yaml) с перечислением всех поддерживаемыех языков:

en:
+  PLUGIN_ERROR:
+    TITLE: Error Plugin
+    DESCRIPTION: The error plugin provides a simple mechanism for handling error pages within Grav.
+ru:
+  PLUGIN_ERROR:
+    TITLE: Плагин ошибок
+    DESCRIPTION: Плагин ошибок предоставляет простой механизм для обработки страниц с ошибками в Grav.
+

Условием для плагинов является использование PLUGIN_PLUGINNAME.* в качестве префикса для всех строк языка, чтобы избежать конфликтов имен. Темы с меньшей вероятностью приведут к конфликтам языковых строк, но хорошей идеей является префикс строк, добавляемых в темы с помощью THEME_THEMENAME.*.

Переопределения перевода⚓︎

Если вы хотите переопределить определённый перевод, просто поместите измененную пару ключ/значение в соответствующий языковой файл в вашей папке user/languages/. Например, файл под названием user/languages/en.yaml может содержать:

PLUGIN_ERROR:
+  TITLE: My Error Plugin
+

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

Расширенные настройки⚓︎

Обработка языков на основе окружения⚓︎

Вы можете воспользоваться конфигурацией окружения Grav для автоматического перенаправления пользователей на правильную версию вашего сайта на основе URL-адреса. Например, если у вас есть URL типа http://ruench.mysite.com, который является псевдонимом для вашего стандартного http://www.mysite.com, вы можете настроить конфигурацию среды:

/user/ruench.mysite.com/config/system.yaml

languages:
+  supported:
+    - ru
+    - en
+

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

Языковые маршруты псевдонимов⚓︎

Поскольку каждая страница может иметь свой собственный маршрут, будет сложно переключаться между различными языковыми версиями одной и той же страницы. Однако у объекта Page появился новый метод (.rawRoute()), который получит один и тот же необработанный маршрут для любого перевода одной страницы на другой язык. Всё, что вам нужно будет сделать, это поместить код языка впереди, чтобы получить правильный маршрут к определенной языковой версии страницы.

Например, скажем, вы находитесь на странице на английском языке с пользовательским маршрутом:

/my-custom-english-page
+

Локализованная страница имеет пользовательский маршрут:

/моя-пользовательская-страница
+

Вы можете получить необработанную страницу на английском языке, и это может быть:

/blog/custom/my-page
+

Затем просто добавьте нужный язык, и это будет ваш новый URL:

/ru/blog/custom/my-page
+

Это позволит получить ту же самую страницу, что и /моя-пользовательская-страница.

Поддержка перевода⚓︎

Grav предоставляет простой, но мощный механизм для предоставления переводов в Twig, а также через PHP для использования в темах и плагинах. Это включено по умолчанию, и будет использовать язык en, если не определен ни один другой язык. Для ручного включения или выключения переводов в вашем system.yaml есть параметр:

languages:
+  translations: true
+

В переводах используется тот же список языков, который определен параметром languages: supported: в вашем system.yaml.

Система перевода работает аналогично конфигурации Grav, и есть несколько мест и способов предоставления переводов.

Первое место, где Grav ищет файлы перевода, находится в папке system/languages. Ожидается, что файлы будут созданы в формате: en.yaml, ru.yaml и т. д. Каждый файл yaml должен содержать массив или вложенные массивы пар ключ/значение:

SITE_NAME: My Blog Site
+HEADER:
+    MAIN_TEXT: Welcome to my new blog site
+    SUB_TEXT: Check back daily for the latest news
+

Для удобства идентификации Grav предпочитает использовать строки на языке с заглавными буквами, поскольку это помогает определить непереведенные строки, а также делает их более понятными при использовании в шаблонах Twig.

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

languages:
+  translations_fallback: true
+

Помогите Grav охватить более широкое сообщество пользователей, предоставляя переводы на вашем языке. Мы используем платформу для переводов Crowdin для облегчения переводов ядра Grav и плагина админки Grav. Зарегистрируйтесь и начните переводить сегодня же!

Активный язык в сессии⚓︎

Если вы хотите запомнить активный язык независимо от URL, вы можете активировать сессионное хранение активного языка. Чтобы это произошло, вы должны убедиться, что включена соответствующая опция в system.yaml. Затем необходимо включить настройку языка:

languages:
+  session_store_active: true
+

В этом случае активный язык будет сохранен в сессии.

Переключатель языков⚓︎

Вы можете загрузить простой плагин переключения языков через плагин админки или через GPM с помощью:

bin/gpm install langswitcher
+

Документация по конфигурации и использованию находится на GitHub.

Настройка с языковыми доменами⚓︎

Настройте свой сайт с помощью обработки языков на основе окружения, чтобы назначить языки по умолчанию (первый язык) доменам.

Убедитесь, что параметр

pages.redirect_default_route: true
+

в вашем system.yaml имеет значение true.

Добавьте следующее в ваш .htaccess файл и измените языковые слаги и доменные имена в соответствии со своими нуждами:

# http://www.cheat-sheets.org/saved-copy/mod_rewrite_cheat_sheet.pdf
+# http://www.workingwith.me.uk/articles/scripting/mod_rewrite
+
+# handle top level e.g. http://grav-site.com/ru
+RewriteRule ^en/?$ "http://grav-site.com" [R=302,L]
+RewriteRule ^ru/?$ "http://grav-site.ru" [R=302,L]
+
+# handle sub pages, exclude admin path
+RewriteCond %{REQUEST_URI} !(admin) [NC]
+RewriteRule ^en/(.*)$ "http://grav-site.com/$1" [R=302,L]
+RewriteCond %{REQUEST_URI} !(admin) [NC]
+RewriteRule ^ru/(.*)$ "http://grav-site.ru/$1" [R=302,L]
+

Если вы знаете, как упростить правила переписывания, пожалуйста, отредактируйте эту страницу на GitHub, нажав на ссылку Редактировать в верхней части страницы.

Языковая логика в шаблонах Twig⚓︎

Часто возникает необходимость доступа к состоянию и логике языка из шаблонов Twig. Например, если Вам необходимо получить доступ к определённому файлу изображения, который отличается для определённого языка и имеет различные имена (myimage.en.jpg и myimage.ru.jpg).

Для отображения правильной версии изображения необходимо знать текущий активный язык. Это возможно в Grav путем доступа к объекту Language через объект Grav и вызова соответствующего метода. В приведенном выше примере это может быть достигнуто с помощью следующего кода Twig:

{{ page.media.images['myimage.'~grav.language.getActive~'.jpg'].html }}
+

Вызов getActive в Twig эффективно вызывает Language->getActive() для возврата текущего активного кода языка. Несколько полезных языковых методов включают в себя:

  • getLanguages() - Возвращает массив всех поддерживаемых языков
  • getLanguage() - Возвращает текущий активный, в противном случае возвращает язык по умолчанию
  • getActive() - Возвращает текущий активный язык
  • getDefault() - Возвращает язык по умолчанию (первый)

Полный список доступных методов можно посмотреть в файле \Grav\Common\Language\Language.php.

\ No newline at end of file diff --git a/content/routing/index.html b/content/routing/index.html new file mode 100644 index 00000000..a261a32b --- /dev/null +++ b/content/routing/index.html @@ -0,0 +1,33 @@ + Маршрутизация - Документация Grav CMS на русском

Маршрутизация⚓︎

Как мы уже описывали в разделе Страница -> Папки, маршрутизация в Grav в первую очередь контролируется структурой папок, которую вы используете при создании контента вашего сайта.

Есть определённые сценарии, где вам нужна большая гибкость, и Grav поставляется с различными инструментами и вариантами конфигурации, чтобы сделать вашу жизнь проще в этом отношении.

Представьте себе, что если вы переместили свой сайт с какой-то другой платформы CMS на Grav, у вас есть несколько вариантов настройки вашего нового сайта:

  1. Попробуйте воспроизвести URL-адреса вашего старого сайта, построив соответствующую структуру папок.
  2. Создайте свой новый сайт так, как вы хотите, а затем попросите ваш веб-сервер «переписать» старые URL-адреса, чтобы перенаправить клиентов в новые места.
  3. Создайте свой новый сайт так, как вы хотите, и настройте Grav для перенаправления клиентов со старых URL-адресов в новые места.

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

Переопределение маршрута на уровне страниц⚓︎

Как указано в разделе Заголовки -> Маршрутизация, вы можете предоставить явные опции маршрутизации для маршрута по умолчанию а также массив псевдонимов маршрутов:

routes:
+  default: '/my/example/page'
+  canonical: '/canonical/url/alias'
+  aliases:
+    - '/some/other/route'
+    - '/can-be-any-valid-slug'
+

Эти опции обрабатываются и кэшируются вместе со страницей, и доступны вместе с тем, что мы называем сырым маршрутом, который является маршрутом, основанным на слагах иерархии страниц (так Grav по умолчанию работает с маршрутом). Таким образом, даже если вы предоставляете маршруты по пользовательским страницам, сырой маршрут также всегда действителен.

Grav также поддерживает перенаправление на уровне страниц, указывая целевую страницу в заголовке страницы. См. раздел Заголовки -> Перенаправление для получения более подробной информации.

redirect: '/some/custom/route[303]'
+

Маршруты и переадресации на уровне сайта⚓︎

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

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

Все правила перенаправления применяются к слагу, начинающемуся после языковой части (если вы используете многоязычные страницы)

Вы должны экранировать определённые символы в любых маршрутах, которые вы хотите сопоставить. Это особенно важно знать, если вы переносите старый сайт, на котором использовались ссылки, содержащие устаревшие расширения файлов (например, .php) или параметры URL (?foo=bar). В этих примерах точка и вопросительный знак должны быть экранированы: /index\.php\?foo=bar: '/new/location'.

Псевдонимы маршрута⚓︎

Простые псевдонимы⚓︎

Самый простой вид псевдонима — это прямое взаимно-однозначное сопоставление. В разделе routes: файла site.yaml вы можете создать список сопоставлений, чтобы указать псевдоним и фактический маршрут, который следует использовать.

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

routes:
+  /something/else: '/blog/focus-and-blur'
+

Если вы запросили URL-адрес http://mysite.com/something/else, и это была недействительная страница, определение маршрутов фактически предоставит вам страницу, расположенную в /blog/focus-and-blur, при условии, что она существует. На самом деле это не перенаправляет пользователя на предоставленную страницу, а просто отображает страницу, когда вы запрашиваете псевдоним.

Псевдонимы на основе регулярных выражений⚓︎

Более продвинутый тип перенаправления псевдонима позволяет использовать простое регулярное выражение для сопоставления части псевдонима с маршрутом. Например, если у вас были:

routes:
+   /another/(.*): '/blog/$1'
+

При этом подстановочный символ будет перемещаться от псевдонима к маршруту, так что http://mysite.com/another/focus-and-blur на самом деле отобразит страницу, найденную в маршруте /blog/focus-and-blur. Это мощный способ сопоставить один набор URL-адресов с другим. Отлично подходит для переноса вашего сайта с WordPress на Grav :)

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

routes:
+  /one-ring/(.*): '/blog/sunshine-in-the-hills'
+

С этим псевдонимом маршрута, любые URL, соответствующие подстановочному знаку /one-ring/to-rule-them-all или /one-ring/is-mine.html, отобразят содержимое страницы с маршрутом /blog/sunshine-in-the-hills.

Вы даже можете подойти более творчески и отобразить несколько элементов или использовать любой синтаксис регулярных выражений:

routes:
+  /complex/(category|section)/(.*): /blog/$1/folder/$2
+

Это совпало бы и переписало бы следующее:

/complex/category/article-1      -> /blog/category/folder/article-1
+/complex/section/article-2.html  -> /blog/section/folder/article-2.html
+

Этот маршрут не будет соответствовать тому, что не начинается с complex/category или complex/section. Для получения дополнительной информации посетите Regexr.com — отличный ресурс для изучения и тестирования регулярных выражений.

Перенаправления⚓︎

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

На перенаправления влияют три параметра конфигурации на системном уровне:

pages:
+  redirect_default_route: false
+  redirect_default_code: 302
+  redirect_trailing_slash: true
+
  • redirect_default_route позволяет Grav автоматически перенаправлять на маршрут страницы по умолчанию.
  • redirect_default_code позволяет установить коды перенаправления HTTP по умолчанию:
    • 301: Постоянное перенаправление. Клиенты, выполняющие последующие запросы для этого ресурса, должны использовать новый URI. Клиенты не должны автоматически выполнять перенаправление для запросов POST/PUT/DELETE.
    • 302: Перенаправление по неопределенной причине. Клиенты, выполняющие последующие запросы для этого ресурса, не должны использовать новый URI. Клиенты не должны автоматически выполнять перенаправление для запросов POST/PUT/DELETE.
    • 303: Переориентация по неопределённой причине. Как правило, "Операция завершена, продолжается в другом месте". Клиенты, делающие последующие запросы на этот ресурс, не должны использовать новый URI. Клиенты должны следовать перенаправлению для POST/PUT/DELETE запросов.
    • 307: Временная переадресация. Ресурс может вернуться в это место позже. Клиенты, делающие последующие запросы на этот ресурс, должны использовать старый URI. Клиенты не должны автоматически переадресовывать запросы POST/PUT/DELETE.
  • Опция redirect_trailing_slash позволяет вам перенаправить на не трейлинговую косую версию текущего URL.

Пример:

redirects:
+    /jungle: '/blog/the-urban-jungle'
+

Вы также можете явно передавать код перенаправления между квадратными скобками [] как часть URL:

redirects:
+    /jungle: '/blog/the-urban-jungle[303]'
+

Если бы вы указали своему браузеру на http://mysite.com/jungle, вы бы на самом деле оказались на странице http://mysite.com/blog/the-urban-jungle.

Те же возможности регулярных выражений, которые существуют для псевдонимов маршрута, существуют и для переадресаций. Например:

redirects:
+    /redirect-test/(.*): /$1
+    /complex/(category|section)/(.*): /blog/$1/folder/$2
+

Они выглядят почти идентично версии Route Alias, но вместо того, чтобы прозрачно показывать новую страницу, Grav фактически перенаправляет браузер и загружает новую страницу специально.

Скрытие маршрута Home⚓︎

Когда вы устанавливаете определенную страницу в качестве домашней страницы вашего сайта через файл system.yaml:

home:
+  alias: '/home'
+

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

Однако Grav на самом деле не делает ничего особенного для страниц, находящихся под этой домашней страницей. Итак, если у вас есть страница с именем /blog, которая отображает список ваших сообщений в блоге, и вы устанавливаете её как свою домашнюю страницу, она будет работать должным образом. Однако, если вы нажмете на сообщение в блоге, которое находится под папкой /blog, URL-адресом может быть /blog/my-blog-post. Это ожидаемое поведение, но это может быть не то, что вы намеревались. Есть новая опция, доступная через system.yaml, которая позволяет вам скрыть этот верхний уровень /blog от маршрута, если он включен.

Вы можете включить это поведение, переключив следующее значение:

home:
+  hide_in_urls: true
+
\ No newline at end of file diff --git a/content/taxonomy/index.html b/content/taxonomy/index.html new file mode 100644 index 00000000..0bbd3e77 --- /dev/null +++ b/content/taxonomy/index.html @@ -0,0 +1,47 @@ + Таксономия - Документация Grav CMS на русском

Таксономия⚓︎

Благодаря Grav возможность группировать или помечать страницы встроена прямо в систему с таксономией.

Таксономия — практика и наука (изучение) классификации вещей или понятий, включая принципы, лежащие в основе такой классификации.

Википедия

Использование таксономии на вашем сайте состоит из нескольких ключевых моментов:

  1. Определите список типов таксономии в site.yaml.
  2. Назначьте своим страницам соответствующие типы таксономии со значениями.

Пример таксономии⚓︎

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

Достичь этого в Grav — простая процедура. Grav предоставляет файл site.yaml по умолчанию, который находится в папке system/config. По умолчанию эта конфигурация определяет два таксономических типа category и tag:

taxonomies: [category,tag]
+

Так как tag уже определен, нужно просто добавить authors. Для этого просто создайте новый site.yaml файл в папке пользователь/config и добавьте следующую строку:

taxonomies: [category,tag,author]
+

Это переопределит таксономии, о которых знает Grav, так что страницы могут быть отнесены к любой из этих трех таксономий.

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

---
+title: Post 1
+taxonomy:
+    tag: [animal, dog]
+    author: ksmith
+---
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+

... и ещё одну страницу, которая выглядит так:

---
+title: Post 2
+taxonomy:
+    tag: [animal, cat]
+    author: jdoe
+---
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+

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

Ваши страницы не обязаны использовать каждую таксономию, которую вы определили в своем site.yaml, но вы должны определить любую таксономию, которую вы используете.

В вашей теме вы можете легко отобразить список страниц, написанных ksmith с помощью taxonomy.findTaxonomy(), чтобы найти их и провести над ними итерацию:

<h2>Kevin Smith's Posts</h2>
+<ul>
+    {% for post in taxonomy.findTaxonomy({'author':'ksmith'}) %}
+        <li>{{ post.title }}</li>
+    {% endfor %}
+</ul>
+

Вы также можете выполнять сложный поиск на основе нескольких таксономий, используя массивы/хэши, например:

{% for post in taxonomy.findTaxonomy({'tag':['animal','cat'],'author':'jdoe'}) %}
+

Здесь вы найдете все сообщения с tag, установленным в animal и cat, и author, установленным в jdoe. В основном, это специально для Пост 2.

Если вам нужна коллекция, которая включает в себя один термин или другой, просто добавьте параметр or после массива, например:

{% for post in taxonomy.findTaxonomy({'tag':['dog','cat']},'or') %}
+

Будут найдены все сообщения с тегом dog или cat.

Коллекции на основе таксономии⚓︎

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

Добавление пользовательских значений таксономии в значениях по умолчанию и параметрах⚓︎

Вы можете использовать формат, приведенный ниже в чертежах, чтобы отменить таксономию Default и/или Options. Важным замечанием здесь является то, что если вы используете этот метод для переопределения обоих этих атрибутов, вы должны добавить validate: type: commalist, в противном случае он может не функционировать должным образом.

taxonomies:
+  fields:
+    header.taxonomy:
+      default:
+        category: ['blog','page']
+        tag: ['test']
+      options:
+        category: ['grav']
+      validate:
+        type: commalist
+
\ No newline at end of file diff --git a/cookbook/admin-recipes/countrylist.png b/cookbook/admin-recipes/countrylist.png new file mode 100644 index 00000000..f1871be7 Binary files /dev/null and b/cookbook/admin-recipes/countrylist.png differ diff --git a/cookbook/admin-recipes/index.html b/cookbook/admin-recipes/index.html new file mode 100644 index 00000000..25dc9c59 --- /dev/null +++ b/cookbook/admin-recipes/index.html @@ -0,0 +1,142 @@ + Рецепты админки - Документация Grav CMS на русском

Рецепты админки⚓︎

Эта страница содержит набор проблем и их решения, связанные с модификациями Grav Admin.

Добавление пользовательского файла YAML⚓︎

Вы хотите создать для всего сайта группу полей компании, редактируемых пользователем, подобных system.yaml или site.yaml, но в отдельном файле.

Как указано в разделе Основы / Конфигурация, первым шагом является предоставление вашего нового файла данных YAML, например: user/config/details.yaml:

name: 'ABC Company Limited'
+address: '8732 North Cumbria Street, Golden, CO, 80401'
+email:
+general: 'hello@abc-company.com'
+support: 'support@abc-company.com'
+sales: 'sales@abc-company.com'
+phone:
+default: '555-123-1111'
+

Теперь вам нужно предоставить соответствующий файл чертежа для определения формы. Чертёж может быть предоставлен с помощью плагина, но самый простой подход - просто поместить чертеж в файл: user/blueprints/config/details.yaml

Если вы хотите предоставить план через плагин, вам сначала нужно добавить этот код в свой плагин сразу после определения класса:

<?php
+
+class MyPlugin extends Plugin
+{
+    public $features = [
+        'blueprints' => 1000,
+    ];
+
+    protected $version;
+    ...
+

Затем добавьте этот код в свой метод onPluginsInitialized():

<?php
+
+if ($this->isAdmin()) {
+    // Store this version and prefer newer method
+    if (method_exists($this, 'getBlueprint')) {
+        $this->version = $this->getBlueprint()->version;
+    } else {
+        $this->version = $this->grav['plugins']->get('admin')->blueprints()->version;
+    }
+}
+

Затем создайте файл с именем user/plugins/myplugin/blueprints/config/details.yaml

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

title: Company Details
+form:
+    validation: loose
+    fields:
+
+        content:
+            type: section
+            title: 'Details'
+            underline: true
+        name:
+            type: text
+            label: 'Company Name'
+            size: medium
+            placeholder: 'ACME Corp'
+
+        address:
+            type: textarea
+            label: 'Address'
+            placeholder: '555 Somestreet,\r\nNewville, TX, 77777'
+            size: medium
+
+        email:
+            type: array
+            label: 'Email Addresses'
+            placeholder_key: Key
+            placeholder_value: Email Address
+
+        phone:
+            type: array
+            label: 'Phone Numbers'
+            placeholder_key: Key
+            placeholder_value: Phone Number
+

Использование типа поля array позволит вам добавлять произвольные поля электронной почты и телефона по мере необходимости.

Добавление модального окна для создания пользовательской страницы⚓︎

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

Прежде всего, создайте форму для нашего модального окна. Создайте новый файл: user/blueprints/admin/pages/new_post.yaml.

form:
+validation: loose
+fields:
+    section:
+        type: section
+        title: Add Post
+
+    title:
+    type: text
+    label: Post Title
+    validate:
+        required: true
+
+    folder:
+    type: hidden
+    default: '@slugify-title'
+
+    route:
+    type: hidden
+    default: /posts
+
+    name:
+    type: hidden
+    default: 'post'
+
+    visible:
+    type: hidden
+    default: ''
+
+    blueprint:
+    type: blueprint
+

Эта форма имитирует модальную форму по умолчанию Add Page. Как видите, для папки у нас есть специальное значение: @slugify-title. Это означает, что папка будет по умолчанию использовать сокращенную версию ввода формы title. route - это /posts, поэтому он будет помещен в папку /posts.

name это post, поэтому он будет использовать чертёж страницы post.

Второй шаг - отредактировать конфигурацию плагина админки. Чтобы добавить собственный код в файл конфигурации admin.yaml плагина админки, создайте файл user/config/plugins/admin.yaml и добавьте этот фрагмент:

add_modals:
+  -
+    label: Add Post
+    blueprint: admin/pages/new_post
+    show_in: bar
+

Ключи/значения конфигурации, доступные для add_modals:

  • label - текст, который будет отображаться на кнопке
  • show_in (по умолчанию: bar) (значения: bar|dropdown) - показывать ли кнопку на bar или dropdown
  • blueprint - чертеж, используемый шаблоном
  • template - шаблон, используемый модальным (по умолчанию: partials/blueprints-new.html.twig)
  • with - данные, которые передаются в шаблон
  • link_classes - классы для добавления к элементу ссылки
  • modal_classes - классы для добавления к модальному элементу

Добавление настраиваемого поля выбора⚓︎

Вы хотите добавить поле выбора с большим списком значений. В этом примере мы предположим, что вы хотите отобразить список стран.

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

В этом примере мы добавим функцию к теме Antimatter, таким образом мы отредактируем файл antimatter.php, который находится в папке user/themes/antimatter.

<?php
+
+namespace Grav\Theme;
+
+use Grav\Common\Theme;
+
+class Antimatter extends Theme
+{
+    public static function countryCodes()
+    {
+        return array (
+            'AF' => 'Afghanistan',
+            'AX' => 'Åland Islands',
+            'AL' => 'Albania',
+            'DZ' => 'Algeria',
+            'AS' => 'American Samoa',
+            'AD' => 'Andorra',
+            'AO' => 'Angola',
+            'AI' => 'Anguilla',
+            'AQ' => 'Antarctica',
+            'AG' => 'Antigua & Barbuda',
+            'AR' => 'Argentina',
+            'AM' => 'Armenia',
+            'AW' => 'Aruba',
+            'AC' => 'Ascension Island',
+            'AU' => 'Australia',
+            'AT' => 'Austria',
+            'AZ' => 'Azerbaijan',
+            'BS' => 'Bahamas',
+            'BH' => 'Bahrain',
+            'BD' => 'Bangladesh',
+            'BB' => 'Barbados',
+            'BY' => 'Belarus',
+            'BE' => 'Belgium',
+            'BZ' => 'Belize',
+            'BJ' => 'Benin',
+            'BM' => 'Bermuda',
+            'BT' => 'Bhutan',
+        );
+    }
+}
+

Это урезанный список для удобства просмотра, но вы можете скопировать/вставить полный список стран из umpirsky/count-list

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

country:
+  type: select
+  label: Country
+  data-options@: '\Grav\Theme\Antimatter::countryCodes'
+

Вот как это будет выглядеть в админке

\ No newline at end of file diff --git a/cookbook/general-recipes/index.html b/cookbook/general-recipes/index.html new file mode 100644 index 00000000..2b313650 --- /dev/null +++ b/cookbook/general-recipes/index.html @@ -0,0 +1,356 @@ + Общие рецепты - Документация Grav CMS на русском

Общие рецепты⚓︎

Эта страница содержит набор проблем и их решения, относящиеся к Grav в целом.

Изменение версии PHP CLI⚓︎

Иногда на терминале версия PHP отличается от версии PHP, используемой веб-сервером.

Вы можете проверить версию PHP, запущенную в CLI, выполнив команду php -v. Если версия PHP ниже 5.5.9, Grav не запустится, поскольку для этого требуется PHP 5.5.9.

Как исправить?

Вам нужно ввести некоторую конфигурацию в .bashrc или в.bash_profile в вашей домашней папке пользователя. Создайте эти файлы, если у вас их ещё нет в папке пользователя. Это скрытые файлы, поэтому вам, возможно, придется выполнить команду ls -al, чтобы их показать. После добавления конфигурации вам нужно будет запустить новый сеанс терминала, чтобы применить эти настройки.

Пример конфигурации может быть:

alias php="/usr/local/bin/php53"
+export PHP_PATH = /usr/local/bin/php53
+

Альтернативный способ - добавить:

# .bash_profile
+
+# Get the aliases and functions
+if [ -f ~/.bashrc ]; then
+        . ~/.bashrc
+fi
+
+# User specific environment and startup programs
+
+PATH=/usr/local/lib/php-5.5/bin:$PATH:$HOME/bin
+
+export PATH
+

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

Вы также можете попробовать поискать файлы или папки php-something в папках /usr/local/bin или /usr/local/lib с помощью ls -la /usr/local/lib/ |grep -i php.

Создание простой галереи⚓︎

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

Самый простой способ решить эту проблему - использовать мультимедийные функции Grav, которые позволяют странице узнавать об изображениях, доступных в её папке.

Предположим, у вас есть страница, которую вы назвали gallery.md, а также у вас есть множество изображений в том же каталоге. Сами имена файлов не важны, поскольку мы просто перебираем каждое из изображений. Поскольку мы хотим иметь дополнительные данные, связанные с каждым изображением, мы включим файл meta.yaml для каждого изображения. Например, у нас есть несколько изображений:

- fido-playing.jpg
+- fido-playing.jpg.meta.yaml
+- fido-sleeping.jpg
+- fido-sleeping.jpg.meta.yaml
+- fido-eating.jpg
+- fido-eating.jpg.meta.yaml
+- fido-growling.jpg
+- fido-growling.jpg.meta.yaml
+

Каждый из файлов .jpg имеет относительно хороший размер, который подходит для полноразмерной версии, размером 1280 x 720 пикселей. Каждый из файлов meta.yaml содержит несколько ключевых записей, давайте посмотрим наfido-plays.jpg.meta.yaml:

title: Fido Playing with his Bone
+description: The other day, Fido got a new bone, and he became really captivated by it.
+

У вас есть полный контроль над тем, что вы помещаете в эти метафайлы, они могут быть абсолютно всем, что вам нужно.

Теперь нам нужно отобразить эти изображения в обратном хронологическом порядке, чтобы новые изображения показывались первыми и отображали их. Поскольку наша страница называется gallery.md, мы должны создать соответствующий templates/gallery.html.twig, который будет содержать необходимую нам логику рендеринга:

{% extends 'partials/base.html.twig' %}
+
+{% block content %}
+    {{ page.content }}
+
+    <ul>
+    {% for image in page.media.images %}
+    <li>
+        <div class="image-surround">
+            {{ image.cropResize(300,200).html }}
+        </div>
+        <div class="image-info">
+            <h2>{{ image.meta.title }}</h2>
+            <p>{{ image.meta.description }}</p>
+        </div>
+    </li>
+    {% endfor %}
+    </ul>
+
+{% endblock %}
+

Чтобы модульная галерея отображалась на другой странице, удалите следующий код из файла Twig, чтобы он работал:

{% extends 'partials/base.html.twig' %}
+
+{% block content %}
+    {{ page.content }}
+

и

{% endblock %}
+

По сути, это расширяет стандартный partials/base.html.twig (если в вашей теме есть этот файл), затем он определяет блок content и предоставляет для него контент. Первое, что мы делаем, это выводим любой page.content. Это будет содержимое файла gallery.md, поэтому он может содержать заголовок и описание этой страницы.

Следующий раздел просто перебирает все медиа страницы, которые являются изображениями. Мы выводим их в виде неупорядоченного списка, чтобы сделать вывод семантическим и легко стилизованным с помощью CSS. мы присваиваем каждому изображению имя переменной image, а затем мы можем выполнить простой метод cropResize(), чтобы изменить размер изображения до подходящего, а затем под ним мы предоставляем информационный раздел с title и описание.

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

Отображение содержимого в колонках⚓︎

Несколько раз возникал вопрос, как быстро отобразить одну страницу в нескольких колонках.

Есть много потенциальных решений, но одно простое решение - разделить ваш контент на логические разделы с помощью разделителя, такого как HTML <hr /> или тег тематический разрыв. В Markdown это представлено 3 или более дефисами или ---. Мы просто создаем наш контент и разделяем наши разделы этими чёрточками:

columns.md

---
+title: 'Columns Page Test'
+---
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas arcu leo, hendrerit ut rhoncus eu, dictum vitae ligula. Suspendisse interdum at purus eget congue. Aliquam erat volutpat. Proin ultrices ligula vitae nisi congue sagittis. Nulla mollis, libero id maximus elementum, ante dolor auctor sem, sed volutpat mauris nisl non quam.
+
+---
+Phasellus id eleifend risus. In dui tellus, dignissim id viverra non, convallis sed ante. Suspendisse dignissim, felis vitae faucibus dictum, dui mi tempor lectus, non porta elit libero quis orci. Morbi porta neque quis magna imperdiet hendrerit.
+
+---
+Praesent eleifend commodo purus, sit amet viverra nunc dictum nec. Mauris vehicula, purus sed convallis blandit, massa sem egestas ex, a congue odio lacus non quam. Donec vitae metus vitae enim imperdiet tempus vitae sit amet quam. Nam sed aliquam justo, in semper eros. Suspendisse magna turpis, mollis quis dictum sit amet, luctus id tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean eu rutrum mi.
+

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

Затем нам просто нужно отрендерить это содержимое с помощью шаблона columns.html.twig (поскольку файл страницы был назван columns.md):

{% extends 'partials/base.html.twig' %}
+
+{% block content %}
+    <table>
+        <tr>
+            {% for column in page.content|split('<hr />') %}
+            <td>{{ column }}</td>
+            {% endfor %}
+        </tr>
+    </table>
+{% endblock %}
+

Вы можете видеть, как содержимое разделяется тегом <hr /> и конвертируется в массив из 3 столбцов, которые мы перебираем и визуализируем. В этом примере мы используем простой тег таблицы HTML, но вы можете использовать все, что захотите.

Действительно простой CSS-слайдер изображений⚓︎

Вам нужен слайдер изображений без каких-либо накладных расходов.

Этот рецепт состоит из 4 изображений и страницы под названием slider.md! Просто поместите изображения там, где находится файл .md. Затем создайте новый шаблон Twig и расширьте base.html.twig.

{% extends 'partials/base.html.twig' %}
+
+{% block content %}
+
+    <div id="slider">
+        <figure>
+        {% for image in page.media.images %}
+            {{ image.html }}
+        {% endfor %}
+        </figure>
+    </div>
+
+    {{ page.content }}
+{% endblock %}
+

Для модульного слайдера удалите

{% extends 'partials/base.html.twig' %}
+
+{% block content %}
+

и

{% endblock %}
+

из предыдущего файла Twig.

Пришло время заняться css. Добавьте это в свой _custom.scss

@keyframes slidy {
+    0% { left: 0%; }
+    20% { left: 0%; }
+    25% { left: -100%; }
+    45% { left: -100%; }
+    50% { left: -200%; }
+    70% { left: -200%; }
+    75% { left: -300%; }
+    95% { left: -300%; }
+    100% { left: -400%; }
+}
+body { margin: 0; }
+div#slider {
+    overflow: hidden;
+    margin-top: -3rem;
+    max-height: 30rem;
+}
+div#slider figure img { width: 20%; float: left; }
+div#slider figure {
+    position: relative;
+    width: 500%;
+    margin: 0;
+    left: 0;
+    animation: 30s slidy infinite;
+}
+

Вот и всё.

Перенос Markdown в HTML⚓︎

На некоторых страницах вы можете захотеть обернуть части содержимого Markdown в некоторый пользовательский HTML-код вместо создания нового шаблона Twig.

Для этого выполните следующие действия:

в файле конфигурации вашей системы user/config/system.yaml не забудьте активировать дополнительную опцию Markdown:

pages:
+  markdown:
+    extra: true
+

в теге оболочки обязательно добавьте параметр markdown="1", чтобы активировать обработку содержимого Markdown:

<div class="myWrapper" markdown="1">
+# my markdown content
+
+this content is wrapped into a div with class "myWrapper"
+</div>
+

Готово.

Добавление виджета недавних записей на боковую панель⚓︎

Вы хотите создать виджет недавних записей на боковой панели

Всегда можно создать частичный шаблон, расширяющий partials/base.html.twig (см. другие решения на этой странице), но вместо этого вы собираетесь создать полный шаблон. Окончательный код для вашего шаблона Twig показан ниже:

<div class="sidebar-content recent-posts">
+    <h3>Недавние записи</h3>
+    {% for p in page.find('/blog').children.order('date', 'desc').slice(0, 5) %}
+        {% set bannerimage = p.media['banner.jpg'] %}
+        <div class="recent-post">
+            {% if bannerimage %}
+                <div class="recent-post-image">{{ bannerimage.cropZoom(60,60).quality(60) }}</div>
+            {% else %}
+                <div class="recent-post-image"><img src="{{ url('theme://images/logo.png') }}" width="60" height="60"></div>
+            {% endif %}
+            <div class="recent-post-text">
+                <h4><a href="{{p.url}}">{{ p.title }}</a></h4>
+                <p>{{ p.date|date("M j, Y")}}</p>
+            </div>
+        </div>
+    {% endfor %}
+</div>
+

Весь этот код выполняет сортировку дочерних элементов (сообщений в блогах) страницы/blog по убыванию даты. Затем он берет первые пять сообщений в блоге, используя фильтр Twig slice. Между прочим, slice (n, m) принимает элементы от n до m - 1. В этом примере все сообщения в блоге с изображением баннера называются banner.jpg. Это устанавливается в переменной bannerimage. Если существует bannerimage, он будет уменьшен до размера 60px x 60px и появится слева от текста заголовка и даты публикации. Если он не существует, размер логотипа веб-сайта изменяется до 60px x 60px и вместо этого помещается слева от заголовка и текста даты.

CSS для этого виджета приведен ниже:

.sidebar-content .recent-post {
+    margin-bottom: 25px;
+    padding-bottom: 25px;
+    border-bottom: 1px solid #F0F0F0;
+    float: left;
+    clear: both;
+    width: 100%;
+}
+
+.sidebar-content [class~='recent-post']:last-of-type {
+    border-bottom: none;
+}
+
+.sidebar-content .recent-post .recent-post-image,
+.sidebar-content .recent-post .recent-post-text {
+    float: left;
+}
+
+.sidebar-content .recent-post .recent-post-image {
+    margin-right: 10px;
+}
+
+.sidebar-content .recent-post .recent-post-text h4 {
+    font-family: serif;
+    margin-bottom: 10px;
+}
+
+.sidebar-content .recent-post .recent-post-text h4 a {
+    color: #193441;
+}
+
+.sidebar-content .recent-post .recent-post-text p {
+    font-family: Arial, sans-serif;
+    font-size: 1.5rem;
+    color: #737373;
+    margin: 0;
+}
+
Отрегулируйте интервал между последними элементами публикации, семейством шрифтов, размером шрифта и толщиной шрифта по своему вкусу.

Создание закрытого раздела⚓︎

Grav позволяет очень легко создать приватный раздел на веб-сайте. Всё это работает благодаря плагину Login.

Требование от пользователей входа в систему перед доступом к части сайта⚓︎

Если у вас его ещё нет, установите его через панель администратора или с помощью утилиты командной строки GPM.

Далее откройте страницу в админке, переключитесь в экспертный режим и в блоке метаданных добавьте

access:
+    site.login: true
+

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

Обратите внимание, что разрешение по умолчанию не распространяется на подстраницы. Для этого в конфигурации плагина входа в систему включите «Использовать родительские правила доступа».

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

Требование специальных разрешений для просмотра одной или нескольких страниц⚓︎

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

Например:

access:
+    site.onlybob: true
+

Затем добавьте Бобу разрешение site.onlybob в его пользовательский файл bob.yaml в папке user/accounts:

access:
+    site.onlybob: true
+

Использование разрешений на основе группы⚓︎

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

Добавьте файл user/config/groups.yaml, например, с таким содержимым:

registered:
+  readableName: 'Зарегистрированные пользователи'
+  description: 'Группа обычных пользователей'
+  access:
+    site:
+      login: true
+premium:
+  readableName: 'Премиум-пользователи'
+  description: 'Группа донатеров'
+  access:
+    site:
+      login: true
+      paid: true
+

Теперь назначьте пользователей в группу, добавив

groups:
+      - premium
+

в yaml-файлы пользователей в директории user/accounts.

Теперь пользователям, принадлежащим к группе premium, будет разрешен доступ к страницам с разрешением site.paid.

Добавление кода JavaScript в нижний колонтитул⚓︎

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

Хороший пример этого - проверка темы Antimatter.

templates/partials/base.html.twig определяет нижний блок для js, вызывая {{ assets.js('bottom') }}

{% block bottom %}
+    {{ assets.js('bottom') }}
+{% endblock %}
+

Вы можете добавить активы в этот блок в Twig, например, вызвав

{% do assets.addJs('theme://js/slidebars.min.js', {group: 'bottom'}) %}

или в PHP

$this->grav['assets']->addJs($this->grav['base_url'] . '/user/plugins/yourplugin/js/somefile.js', ['group' => 'bottom']);

Переопределение расположения папки журналов по умолчанию⚓︎

Расположение по умолчанию для вывода журналов Grav просто называется logs/. К сожалению, есть случаи, когда эта папка logs/ уже используется или недоступна для использования. Гибкая потоковая система Grav позволяет настраивать расположение этих папок.

Во-первых, вам нужно создать новую папку. В этом примере мы создадим новую папку в корне вашей установки Grav под названием grav-logs/. Затем создайте новый файл корневого уровня с именем setup.php и вставьте следующий код:

<?php
+
+use Grav\Common\Utils;
+
+return [
+    'streams' => [
+        'schemes' => [
+            'log' => [
+               'type' => 'ReadOnlyStream',
+               'prefixes' => [
+                   '' => ["grav-logs"],
+               ]
+            ]
+        ]
+    ]
+];
+

Это в основном заменяет поток log папкой grav-logs/, а не папкой logs/ по умолчанию, как определено в system/src/Grav/Common/Config/Setup.php.

Разделенная система вертикального меню⚓︎

Чтобы создать вертикальное сворачиваемое иерархическое меню страниц, вам понадобится Twig-loop, немного CSS и немного JavaScript. Окончательный результат при использовании темы Antimatter будет выглядеть так:

Vertical Menu

Давайте начнем с Twig:

<ol class="tree">
+    {% for page in pages.children.visible %}
+        {% if page.children.visible is empty %}
+            <li class="item">
+            <a href="{{ page.url }}">{{ page.title }}</a>
+        {% else %}
+            <li class="parent">
+            <a href="javascript:void(0);">{{ page.title }}</a>
+            <ol>
+                {% for child in page.children.visible %}
+                    {% if child.children.visible is empty %}
+                        <li class="item">
+                        <a href="{{ child.url }}">{{ child.title }}</a>
+                    {% else %}
+                        <li class="parent">
+                        <a href="javascript:void(0);">{{ child.title }}</a>
+                        <ol>
+                            {% for subchild in child.children.visible %}
+                                <li><a href="{{ subchild.url }}">{{ subchild.title }}</a></li>
+                            {% endfor %}
+                        </ol>
+                    {% endif %}
+                    </li>
+                {% endfor %}
+            </ol>
+        {% endif %}
+        </li>
+    {% endfor %}
+</ol>
+

Это создает упорядоченный список, который перебирает все видимые страницы в Grav, переходя на три уровня в глубину, чтобы создать структуру для каждого уровня. Список, охватывающий всю структуру, имеет класс tree, и каждый элемент списка имеет класс parent, если он содержит дочерние элементы, или элемент, если его нет.

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

Чтобы добавить немного стиля, мы добавляем немного CSS:

<style>
+ol.tree li {
+    position: relative;
+}
+ol.tree li ol {
+    display: none;
+}
+ol.tree li.open > ol {
+    display: block;
+}
+ol.tree li.parent:after {
+    content: '[+]';
+}
+ol.tree li.parent.open:after {
+    content: '';
+}
+</style>
+

Обычно его следует размещать перед структурой Twig или, в идеале, транслировать в менеджере активов вашей темы. Эффект заключается в добавлении [+] после каждого родительского элемента, указывающего, что он может быть открыт, который исчезает при открытии.

Наконец, давайте добавим немного JavaScript для переключения дескрипторов класса open:

<script type="text/javascript">
+var tree = document.querySelectorAll('ol.tree a:not(:last-child)');
+for(var i = 0; i < tree.length; i++){
+    tree[i].addEventListener('click', function(e) {
+        var parent = e.target.parentElement;
+        var classList = parent.classList;
+        if(classList.contains("open")) {
+            classList.remove('open');
+            var opensubs = parent.querySelectorAll(':scope .open');
+            for(var i = 0; i < opensubs.length; i++){
+                opensubs[i].classList.remove('open');
+            }
+        } else {
+            classList.add('open');
+        }
+    });
+}
+</script>
+

Его всегда следует размещать после структуры Twig, также в идеале в менеджере активов.

Динамическое оформление одной или нескольких страниц⚓︎

Вы можете динамически стилизовать разные страницы/сообщения на своем сайте Grav (независимо от назначения файла шаблона), настроив файл Twig темы для применения класса CSS, переданного как переменная в метаданных страницы.

Вы можете стилизовать разные сообщения/страницы на своем сайте Grav двумя способами:

  1. Если вы используете тему Antimatter, вы можете использовать существующее свойство заголовка body_classes, чтобы установить свой собственный класс CSS для этой страницы.
  2. Если вы используете тему, не основанную на Antimatter (или не реализуя body_classes, как это делает), вы можете настроить файл Twig темы для применения класса CSS, переданного как переменная в свойстве заголовка страницы.

Например, в файле вашей темы base.html.twig или в более конкретном шаблоне, таком как файл page.html.twig, вы можете добавить класс для отображения содержимого страницы, например:

<div class="{{ page.header.body_classes }}">
+...
+</div>
+

Затем для каждой страницы, которую вы хотите иметь уникальный стиль, вы должны добавить следующее свойство заголовка (при условии, что вы определили класс CSS для featurepost):

body_classes: featurepost
+

Примечание. Именно так тема Antimatter применяет классы, зависящие от страницы, и поэтому это хороший стандарт для подражания.

Перенос HTML-темы в Grav⚓︎

Перенос HTML-темы на Grav - обычная задача. Вот практический пошаговый процесс, который можно использовать для достижения этой цели.

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

Во-первых, используйте плагин Grav Devtools, чтобы создать пустую тему, и настройте Grav для её использования в системных настройках.

Создайте шаблон Twig templates/home.html.twig внутри папки шаблонов темы. Это будет представлять собой шаблон, специфичный для домашней страницы. Обычно главная страница — это уникальная страница на сайте, поэтому она, вероятно, заслуживает отдельного файла Twig.

Скопируйте HTML-код с домашней страницы шаблона, начиная с <html> и заканчивая </html> в ваш новый файл home.html.twig.

Теперь переместите все ресурсы темы HTML (изображения, CSS, JS) в папку вашей темы. Вы можете сохранить существующую структуру папок темы или изменить ее.

Создайте пустой файл pages/01.home/home.md. Теперь укажите в браузере yoursite.com/home: он должен отображать контент, но CSS, JS и изображения не будут загружены, вероятно, потому, что в теме они жестко запрограммированы как ссылки /img/* или /css/*.

Добавление правильных ссылок на ресурсы⚓︎

В Grav ссылки не работают, потому что они указывают на домашний маршрут, поэтому вместо того, чтобы указывать на /user/themes/mytheme/img, они указывают на /img в корне Grav. Поскольку все связанные с темой ресурсы лучше всего хранить внутри темы, нам нужно указать Grav в правильное место.

Найдите на странице ресурсы и измените ссылки на изображения с img/*.* на <img src="{{ url('theme://img/*.*', true) }}" />.

Таблицы стилей требуют немного большего внимания, так как есть конвейер ресурсов, который мы захотим включить в какой-то момент, поэтому мы перемещаем их в блок таблиц стилей в теге <head>.

Пример:

{% block stylesheets %}
+    {% do assets.addCss('theme://css/styles.min.css', 100) %}
+{% endblock %}
+{{ assets.css()|raw }}
+

То же самое относится и к файлам JavaScript с дополнительным требованием, чтобы часть JS загружалась в нижний колонтитул.

Пример:

{% block javascripts %}
+    {% do assets.addJs('theme://js/custom.js') %}
+    {% do assets.addJs('jquery', 101) %}
+{% endblock %}
+{{ assets.js()|raw }}
+

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

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

Добавление ещё одной страницы⚓︎

Чтобы добавить ещё одну страницу, процесс аналогичен. Например, предположим, что вы хотите создать следующую страницу блога. Повторите процесс, чтобы добавить файл templates/blog.html.twig, вставить исходный HTML-код и создать страницу pages/02.blog/blog.md.

Теперь, хотя ссылки на изображения внутри страниц по-прежнему необходимо перенести на синтаксис ресурсов Grav (или просто изменить путь), вы не хотите повторять ту же работу, которую вы проделали выше для ресурсов CSS и JS. Его следует повторно использовать на сайте.

Общие элементы⚓︎

Определите общие части страниц (верхний и нижний колонтитулы) и переместите их в файл templates/partials/base.html.twig.

Затем каждый шаблон страницы должен расширить partials/base.html.twig и просто добавить свое уникальное содержание.

Добавить актив на определенную страницу⚓︎

Вам необходимо добавить актив в определённый шаблон вашей темы.

В большинстве случаев ваши активы будут добавлены внутри блока Twig в вашем базовом шаблоне, как показано ниже.

{% block javascripts %}
+    {% do assets.addJs('theme://js/jquery.js', 91) %}
+{% endblock %}
+{{ assets.js()|raw }}
+

Чтобы добавить свой актив, вы должны расширить этот блок в своем шаблоне и вызвать {{parent ()}}, который получит активы, уже добавленные в ваш базовый шаблон. Допустим, вы хотите добавить файл «gallery.js» на страницу «Галерея портфолио». Отредактируйте свой шаблон и добавьте свой ресурс с помощью {{parent ()}}.

{% block javascripts %}
+    {% do assets.addJs('theme://js/gallery.js', 100) %}
+    {{ parent() }}
+{% endblock %}
+

Повторно использовать страницу или модульный контент на другой странице⚓︎

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

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

Примечание: существует также плагин Grav Page Inject Plugin для этой функции, которая может быть подходящей для более сложных сценариев.

Во-первых, создайте новый файл шаблона, который будет служить заполнителем для содержимого - он может иметь любое имя, это имя называется "modular_reuse" и будет храниться в папке templates/modular_ вашей темы для этого примера, но может храниться где угодно. в папке шаблонов.

modular_reuse.html.twig содержит только одну строку:

{{ page.content }}
+
Затем создайте новую модульную страницу в панели администратора, где этот контент должен отображаться с использованием этого нового шаблона «модульного повторного использования». Имя новой страницы может быть любым, поскольку оно не будет отображаться - будет выводиться исходный заголовок страницы.

Содержимое страницы - это всего одна строка: Страница:

{% include 'modular_reuse.html.twig' with {'page': page.find('/test-page/amazing-offers')} %}
+
Модульная:
{% include 'modular/modular_reuse.html.twig' with {'page': page.find('/test-page/_amazing-offers')} %}
+

То, что идет после «include», - это место, где хранится шаблон из первого шага, вероятно, в папке templates для обычных страниц, и в папке templates/modular для модульных страниц.

После page.find должна идти фактическая ссылка на исходный контент, который вы хотите использовать повторно. Модульный контент начинается с _, а страницы - нет. Самый простой способ найти правильную ссылку - открыть страницу в панели администратора и скопировать URL-адрес после слова admin.

The final page should look like this:

---
+title: 'Modular Reuse Example'
+---
+
+{% include 'modular/modular_reuse.html.twig' with {'page': page.find('/test-page/_amazing-offers')} %}
+

Теперь «удивительные предложения» могут отображаться в нескольких местах, но их нужно обновлять только один раз.

Создайте настраиваемое поле защиты от спама для вашей контактной формы⚓︎

Обычные методы предотвращения спама, такие как поле-приманка, некоторые спам-боты обходят стороной.

Сделайте так, чтобы боту было сложнее угадать, что он может и не может заполнить, при заполнении контактной формы. Проще говоря, задайте вопрос, на который пользователь обязательно ответит, но в ответах на который бот не может понять значение. В вашем Markdown-файле с Form-data добавьте это поле:

    - name: personality
+      type: radio
+      label: What is five times eight?
+      options:
+        alaska: 32
+        oklahoma: 40
+        california: 48
+      validate:
+        required: true
+        pattern: "^oklahoma$"
+        message: Not quite, try that math again.
+

Вопрос должен быть простым, но с множеством простых неправильных ответов. Важен порядок ответов. Правильный ответ никогда не должен быть первым; стремитесь где-то посередине. Важно самостоятельно рандомизировать значения, стоящие за ответами (метками), поэтому база данных связанных значений и ответов не поможет при ответе.

Боты все время становятся умнее, но они, как правило, не пытаются ответить на один и тот же вопрос несколько раз, если первая попытка не удалась. Кроме того, даже самые умные из них полагаются на словари известных данных, чтобы угадать ответ. Мы задаем простой вопрос: «Сколько будет пять умножить на восемь?» И даем три варианта: «32», «40» и «48». Правильный ответ - «40», но вместо проверки математических навыков бота мы присваиваем этим числам значения «alaska», «oklahoma» и «california» соответственно. Поскольку боты смотрят на возможные значения, а не на их ярлыки, ответы не имеют отношения к вопросу. Вы даже можете добавить ответ «Ананас» со значением «миссисипи» и подтвердить его, и просто попросить своих пользователей выбрать его в качестве своего ответа. Дело в том, чтобы персонализировать рандомизацию данных.

Отображение разного содержимого robots.txt для разных сред⚓︎

Вы настроили поддомен dev.yourdomain.com в качестве сайта разработки для предварительного просмотра того, над чем вы работаете, перед публикацией изменений в yourdomain.com, и хотите запретить поисковым индексаторам сканировать его, сохраняя при этом рабочую среду. сайт виден в результатах поиска.

Хотя вы должны защищать свой сайт разработки паролем, чтобы он действительно оставался конфиденциальным, иногда достаточно, и даже более практично, просто запретить индексаторам поисковых систем сканировать ваш сайт. К счастью, Grav может обрабатывать страницы в формате txt так же, как и html, поэтому мы можем использовать конфигурации среды и шаблоны twig для завершения работы.

Сначала давайте создадим файл конфигурации site.yaml, который сообщит нашему шаблону, что dev.yourdomain.com - это среда разработки.

/user/[dev.yourdomain.com]/config/site.yaml:

environment: dev
+

Затем создайте шаблон страницы robots.txt.twig, который проверяет, работает ли Grav в настоящее время на нашем сайте разработки, и отображает другое содержимое, если это так.

/user/themes/[yourtheme]/templates/robots.txt.twig:

{% if config.site.environment == 'dev' %}
+{% for rule in page.header.dev %}
+{{ rule }}
+{% endfor %}
+
+{% else %}
+{{ page.content }}
+
+{% endif %}
+

Наконец, создайте страницу с маршрутизацией в /robots.txt с правилами по умолчанию robots.txt в содержимом страницы и правилами нашей альтернативной версии для разработки во внешнем интерфейсе страницы. Чтобы отображать содержимое страницы как необработанный текст вместо HTML, мы также отключим рендеринг Markdown.

/user/pages/robots/robots.md:

---
+routes:
+  default: /robots.txt
+process:
+  markdown: false
+
+dev:
+  - 'User-agent: *'
+  - 'Disallow: /'
+---
+
+User-agent: *
+Disallow: /backup/
+Disallow: /bin/
+Disallow: /cache/
+Disallow: /grav/
+Disallow: /logs/
+Disallow: /system/
+Disallow: /vendor/
+Disallow: /user/
+Allow: /user/pages/
+Allow: /user/themes/
+Allow: /user/images/
+Allow: /user/plugins/*.css$
+Allow: /user/plugins/*.js$
+

Теперь у вас должен быть файл robots.txt, размещенный в корне вашего сайта с динамическим содержимым, также доступный для редактирования с помощью плагина админки.

Убедитесь, что ваш рабочий сайт не отображает Disallow: /, так как это полностью уничтожит его видимость в поисковых системах.

\ No newline at end of file diff --git a/cookbook/general-recipes/vertical_menu.png b/cookbook/general-recipes/vertical_menu.png new file mode 100644 index 00000000..ac7b28e2 Binary files /dev/null and b/cookbook/general-recipes/vertical_menu.png differ diff --git a/cookbook/plugin-recipes/index.html b/cookbook/plugin-recipes/index.html new file mode 100644 index 00000000..a637a8a4 --- /dev/null +++ b/cookbook/plugin-recipes/index.html @@ -0,0 +1,231 @@ + Рецепты плагинов - Документация Grav CMS на русском

Рецепты плагинов⚓︎

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

На выходе какой-то PHP-код в шаблон Twig⚓︎

Вы хотите обработать некоторый пользовательский PHP-код и сделать результат доступным на странице.

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

Создайте новую папку плагина в user/plugins/example и добавьте эти файлы:

user/plugins/example/example.php user/plugins/example/example.yaml user/plugins/example/twig/ExampleTwigExtension.php

В twig/ExampleTwigExtension.php вы выполните свою собственную обработку и вернете её в виде строки в exampleFunction().

Затем в вашем файле шаблона Twig (или в файле Markdown страницы, если вы включили обработку Twig в Pages) визуализируйте вывод, используя: {{ example() }}.

Обзор окончен, давайте посмотрим на код:

example.php
<?php
+
+namespace Grav\Plugin;
+
+use \Grav\Common\Plugin;
+
+class ExamplePlugin extends Plugin
+{
+    public static function getSubscribedEvents()
+    {
+        return [
+            'onTwigExtensions' => ['onTwigExtensions', 0]
+        ];
+    }
+
+    public function onTwigExtensions()
+    {
+        require_once(__DIR__ . '/twig/ExampleTwigExtension.php');
+
+        $this->grav['twig']->twig->addExtension(new ExampleTwigExtension());
+    }
+}
+
ExampleTwigExtension.php
<?php
+
+namespace Grav\Plugin;
+
+use Grav\Common\Twig\Extension\GravExtension;
+
+class ExampleTwigExtension extends GravExtension
+{
+    public function getName()
+    {
+        return 'ExampleTwigExtension';
+    }
+
+    public function getFunctions(): array
+    {
+        return [
+            new \Twig_SimpleFunction('example', [$this, 'exampleFunction'])
+        ];
+    }
+
+    public function exampleFunction()
+    {
+        return 'something';
+    }
+}
+

example.yaml:

enabled: true
+

Теперь плагин установлен и включен, и всё должно работать.

Фильтрация таксономий с помощью плагина taxonomylist⚓︎

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

Это пример того, как гибкость плагинов Grav действительно пригодится. Первый шаг - убедиться, что у вас установлен плагин Grav для списка таксономии в вашем пакете Grav. После установки убедитесь, что вы скопировали /yoursite/user/plugins/taxonomylist/templates/partials/taxonomylist.html.twig в /yoursite/user/themes/yourtheme/templates/partials/taxonomylist.html.twig, поскольку мы будем вносить изменения в этот файл.

Чтобы эта работа работала, мы собираемся ввести три новые переменные: filter, filterstart и filterend, где

  • filter - это логическое значение, которому будет присвоено значение true, если мы хотим иметь возможность перечислять только несколько верхних тегов (или любую другую таксономию, которую вы хотите использовать).
  • filterstart - произвольное целое число, но обычно его следует установить равным нулю. Это индекс в массиве таксономии, с которого вы хотите начать.
  • filterend - произвольное целое число и индекс в массиве таксономии, которым вы хотите закончить. Обратите внимание, что если вы хотите перечислить пять лучших элементов в своей таксономии, вы должны установить это значение в 5, так как наш цикл будет повторяться до filterend -1.

Следующим шагом будет вызов taxonomylist.html.twig в шаблоне, в котором мы хотим перечислить основные элементы в нашей таксономии. Как обычно, мы будем делать это с помощью {% include %}, как показано в следующем примере фрагмента:

{% if config.plugins.taxonomylist.enabled %}
+    <div class="sidebar-content">
+        <h4>Popular Tags</h4>
+        {% include 'partials/taxonomylist.html.twig' with {'taxonomy':'tag', filter: true, filterstart: 0, filterend: 5} %}
+    </div>
+{% endif %}
+
В этом примере мы собираемся перечислить пять самых популярных тегов.

Теперь давайте обратим наше внимание на taxonomylist.html.twig. Для справки, вот код по умолчанию для этого файла при первоначальной установке:

{% set taxlist = taxonomylist.get() %}
+
+{% if taxlist %}
+    <span class="tags">
+        {% for tax,value in taxlist[taxonomy] %}
+            <a href="{{ base_url }}/{{ taxonomy }}{{ config.system.param_sep }}{{ tax|e('url') }}">{{ tax }}</a>
+        {% endfor %}
+    </span>
+{% endif %}
+

Чтобы это работало с нашими новыми переменными (например, filter, filterstart и filterend), нам нужно будет включить их в этот файл следующим образом:

{% set taxlist = taxonomylist.get %}
+
+{% if taxlist %}
+    {% set taxlist_taxonomy = taxlist[taxonomy] %}
+
+    {% if filter %}
+        {% set taxlist_taxonomy = taxlist_taxonomy|slice(filterstart,filterend) %}
+    {% endif %}
+
+    <span class="tags">
+        {% for tax,value in taxlist_taxonomy %}
+            <a href="{{ base_url }}/{{ taxonomy }}{{ config.system.param_sep }}{{ tax|e('url') }}">{{ tax }}</a>
+        {% endfor %}
+    </span>
+{% endif %}
+

Здесь файл сначала проверяет, установлен ли filter в значение true. Если это так, цикл for выполняется так же, как и в исходном файле taxonomylist.html.twig, но на этот раз он использует фильтр Twig slice. Этот filter, в нашем случае, извлечет подмножество массива от начального индекса (в нашем случае filterstart) до конечного индекса (в нашем случае filterend -1).

Если, с другой стороны, для переменной filter установлено значение false или она не найдена, будут перечислены все элементы в вашей таксономии.

Добавление кнопки поиска в плагин SimpleSearch⚓︎

Вам действительно нравится плагин Grav SimpleSearch, но вы хотите добавить кнопку поиска в дополнение к текстовому полю. Одна из причин для добавления этой кнопки заключается в том, что пользователю может быть не очевидно, что ему нужно нажать клавишу «Enter», чтобы инициировать свой поисковый запрос.

Сначала убедитесь, что вы установили плагин Grav SimpleSearch. Затем убедитесь, что вы скопировали /yoursite/user/plugins/simplesearch/templates/partials/simplesearch-searchbox.html.twig в /yoursite/user/themes/yourtheme/templates/partials/simplesearch-searchbox.html.twig, так как нам нужно будет внести изменения в этот файл.

Прежде чем идти дальше, давайте рассмотрим, что делает этот файл:

<input type="text" placeholder="Search..." value="{{ query }}"cp">{{ base_url }}{{ config.plugins.simplesearch.route}}/query" />
+<script>
+    jQuery(document).ready(function($) {
+        var input = $('[data-search-input]');
+        input.on('keypress', function(event) {
+            if (event.which == 13 && input.val().length > 3) {
+                event.preventDefault();
+                window.location.href = input.data('search-input') + '{{ config.system.param_sep }}' + input.val();
+            }
+        });
+    });
+</script>
+

Первая строка просто вставляет поле ввода текста в ваш шаблон Twig. Атрибут data-search-input хранит базовый URL страницы результирующего запроса. По умолчанию http://yoursite/search/query.

Теперь перейдем к jQuery ниже. Здесь тег, содержащий атрибут data-search-input, назначается переменной input. Затем к input применяется метод jQuery .on(). Метод .on() применяет обработчики событий к выбранным элементам (в данном случае к текстовому полю <input>). Итак, когда пользователь нажимает (keypress) клавишу, чтобы начать поиск, оператор if проверяет, что следующие элементы являются истинными:

  1. Была нажата клавиша Enter: event.which == 13, где 13 - числовое значение клавиши Enter на клавиатуре.
  2. Количество символов, введенных в поле поиска, больше трех. Вы можете настроить это по своему вкусу, поскольку в вашей организации может быть много сокращений, состоящих из трех или менее символов.

Если они верны, то event.preventDefault(); гарантирует, что действие браузера по умолчанию для клавиши Enter игнорируется, так как это помешает нашему поиску. Наконец, создается полный URL-адрес поискового запроса. По умолчанию это http://yoursite/search/query:yourquery. Отсюда /yoursite/user/plugins/simplesearch/simplesearch.php выполняет фактический поиск, а другие файлы Twig в подключаемом модуле выводят результаты.

Нет возврата к нашему решению! Если мы хотим добавить кнопку поиска, мы должны:

  1. Добавьте кнопку
  2. Обязательно примените к кнопке метод .on(), но на этот раз с помощью click вместо keypress

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

<div class="input-group input-group-search">
+    <input type="search" placeholder="Search" value="{{ query }}" data-search-input="{{ base_url }}{{ config.plugins.simplesearch.route}}/query" >
+    <span class="input-group-button">
+        <button class="button" type="submit">Search</button>
+    </span>
+</div>
+
+<script>
+    jQuery(document).ready(function($) {
+        var input = $('[data-search-input]');
+        var searchButton = $('.button.search');
+
+        input.on('keypress', function(event) {
+            if (event.which == 13 && input.val().length > 3) {
+                event.preventDefault();
+                window.location.href = input.data('search-input') + '{{ config.system.param_sep }}' + input.val();
+            }
+        });
+
+        searchButton.on('click', function(event) {
+            if (input.val().length > 3) {
+                event.preventDefault();
+                window.location.href = input.data('search-input') + '{{ config.system.param_sep }}' + input.val();
+            }
+        });
+    });
+</script>
+

Атрибуты HTML и class специфичны для Turret, но конечный результат будет что-то вроде этого. Мы также можем видеть, что метод .on() также был назначен кнопке поиска, но он проверяет только то, что количество символов, введенных в поле поиска, больше трех перед выполнением кода в операторе if.

Вот HTML-код по умолчанию для текстового поля и кнопка поиска для нескольких других фреймворков:

Bootstrap

<div class="input-group">
+    <input type="text" class="form-control" placeholder="Search for...">
+    <span class="input-group-btn">
+        <button class="btn btn-default" type="button">Go!</button>
+    </span>
+</div>
+

Materialize

<div class="input-field">
+    <input id="search" type="search" required>
+    <label for="search"><i class="material-icons">search</i></label>
+</div>
+

Pure CSS

<form class="pure-form">
+    <input type="text" class="pure-input-rounded">
+    <button type="submit" class="pure-button">Search</button>
+</form>
+

Semantic UI

<div class="ui action input">
+  <input type="text" placeholder="Search...">
+  <button class="ui button">Search</button>
+</div>
+

Итерации по страницам и медиа⚓︎

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

Используйте возможности Grav для создания рекурсивного индекса всех страниц, а при индексировании также собирайте медиа-файлы для каждой страницы. Плагин DirectoryListing делает именно это и создает HTML- список с использованием созданной древовидной структуры. Для этого мы создадим рекурсивную функцию - или метод, который может иметь место в классе плагина, - который просматривает каждую страницу и сохраняет её в массиве. Метод рекурсивен, потому что он снова вызывает себя для каждой найденной страницы, имеющей дочерние элементы.

Но обо всем по порядку, метод принимает три параметра: первый - это $route к странице, который сообщает Grav, где его найти; второй - $mode, который сообщает методу, следует ли выполнять итерацию по самой странице или по её дочерним элементам; третий - $depth, который отслеживает, на каком уровне находится страница. Метод сначала создает экземпляр объекта Page, затем работает с глубиной и режимом и создает коллекцию. По умолчанию мы упорядочиваем страницы по дате, по убыванию, но вы можете сделать это настраиваемым. Затем мы создаем массив $paths для хранения каждой страницы. Поскольку маршруты в Grav уникальны, они используются как ключи в этом массиве для идентификации каждой страницы.

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

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

<?php
+
+/**
+ * Creates page-structure recursively
+ * @param string $route Route to page
+ * @param integer $depth Reserved placeholder for recursion depth
+ * @return array Page-structure with children and media
+ */
+public function buildTree($route, $mode = false, $depth = 0)
+{
+    $page = Grav::instance()['page'];
+    $depth++;
+    $mode = '@page.self';
+    if ($depth > 1) {
+        $mode = '@page.children';
+    }
+    $pages = $page->evaluate([$mode => $route]);
+    $pages = $pages->published()->order('date', 'desc');
+    $paths = array();
+    foreach ($pages as $page) {
+        $route = $page->rawRoute();
+        $path = $page->path();
+        $title = $page->title();
+        $paths[$route]['depth'] = $depth;
+        $paths[$route]['title'] = $title;
+        $paths[$route]['route'] = $route;
+        if (!empty($paths[$route])) {
+            $children = $this->buildTree($route, $mode, $depth);
+            if (!empty($children)) {
+                $paths[$route]['children'] = $children;
+            }
+        }
+        $media = new Media($path);
+        foreach ($media->all() as $filename => $file) {
+            $paths[$route]['media'][$filename] = $file->items()['type'];
+        }
+    }
+    if (!empty($paths)) {
+        return $paths;
+    } else {
+        return null;
+    }
+}
+

Плагин пользовательских шаблонов Twig⚓︎

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

Единственное, что вам нужно в этом плагине, - это событие, чтобы указать местоположение для ваших шаблонов. Самый простой способ создать плагин - использовать плагин DevTools. Итак, установите это с помощью:

$ bin/gpm install devtools
+

После установки создайте новый плагин с помощью команды:

$ bin/plugin devtools newplugin
+

Заполните данные для имени, автора и т. д. Скажем, мы называем это Custom Templates, и плагин будет создан в /user/plugins/custom-templates. Все, что вам нужно сделать сейчас, это отредактировать файл custom-templates.php и поместить этот код:

<?php
+
+namespace Grav\Plugin;
+
+use \Grav\Common\Plugin;
+
+class CustomTemplatesPlugin extends Plugin
+{
+    /**
+     * Subscribe to required events
+     *
+     * @return array
+     */
+    public static function getSubscribedEvents()
+    {
+        return [
+            'onTwigTemplatePaths' => ['onTwigTemplatePaths', 0]
+        ];
+    }
+
+    /**
+     * Add current directory to twig lookup paths.
+     */
+    public function onTwigTemplatePaths()
+    {
+        $this->grav['twig']->twig_paths[] = __DIR__ . '/templates';
+    }
+}
+

Этот плагин просто подписывается на событие onTwigTemplatePaths(), а затем в этом методе события он добавляет папку user/plugins/custom-templates/templates к массиву путей, которые Twig будет проверять.

Это позволяет вам добавить шаблон Twig под названием foo.html.twig, и тогда любая страница с именем foo.md сможет использовать этот шаблон.

Это добавит путь настраиваемого шаблона плагина к концу массива путей к шаблону Twig. Это означает, что тема (которая всегда стоит первой) будет иметь приоритет над одноименными шаблонами плагина. Чтобы решить эту проблему, просто поместите путь шаблона плагина перед массивом, изменив метод события:

<?php
+
+/**
+ * Add current directory to twig lookup paths.
+*/
+public function onTwigTemplatePaths()
+{
+    array_unshift($this->grav['twig']->twig_paths, __DIR__ . '/templates');
+}
+

Использование кэша в ваших собственных плагинах⚓︎

При разработке собственных плагинов часто бывает полезно использовать кэш Grav для кэширования данных для повышения производительности. К счастью, это очень простой процесс использования кэша в вашем собственном коде.

Это некоторый базовый код, который показывает вам, как работает кэширование:

<?php
+
+$cache = Grav::instance()['cache'];
+$id = 'myplugin-data'
+$list = [];
+
+if ($data = $cache->fetch($id)) {
+    return $data;
+} else {
+    $data = $this->gatherData();
+    $cache->save($hash, $data);
+    return $data;
+}
+

Сначала мы получаем объект кэша Grav, а затем пытаемся проверить, существуют ли наши данные уже в кэше ($data = $cache->fetch($id)). Если $data существует, просто верните его без необходимости дополнительной работы.

Однако, если выборка кэша возвращает null, то есть он не кэшируется, сделайте некоторую работу и получите данные ($data = $this->gatherData()), а затем просто сохраните данные для следующего раза ($cache->save($hash, $data)).

Обучение на примере⚓︎

Учитывая обилие доступных в настоящее время плагинов, есть вероятность, что вы найдете свои ответы где-то в их исходном коде. Проблема в том, чтобы знать, на какие из них смотреть. Эта страница пытается перечислить общие проблемы плагинов, а затем перечисляет конкретные плагины, которые демонстрируют, как их решать.

Прежде чем продолжить, убедитесь, что вы ознакомились с основной документацией, особенно с главой Жизненный цикл Grav!

Как я могу читать и записывать данные в файловую систему?⚓︎

Существует множество способов чтения и записи данных в файловую систему.

Как сделать данные из плагина доступными для Twig?⚓︎

Один из способов — через пространство имён config.plugins.X. Просто сделайте $this->config->set(), как показано в одном из следующих примеров:

Затем вы можете получить доступ к этому в шаблоне Twig через {{ config.plugins.X.whatever.variable }}.

Кроме того, вы можете передавать переменные через grav['twig']:

Наконец, вы можете ввести данные непосредственно в заголовок страницы, как показано в плагине импорта.

Как я могу ввести Markdown на страницу?⚓︎

В соответствии с жизненным циклом Grav, последний хук события, в который вы можете ввести необработанный Markdown, — onPageContentRaw. Самый ранний из них, вероятно, onPageInitialized. Вы можете просто захватить $this->grav['page']->rawMarkdown(), изменить его, а затем записать обратно с помощью $this->grav['page']->setRawContent(). Следующие плагины демонстрируют это:

Как мне внедрить HTML в конечный результат?⚓︎

Последний раз вы можете ввести HTML и всё ещё кэшировать свои выходные данные во время события onOutputGenerated. Вы можете просто захватить и изменить $this->grav->output.

  • Многие распространенные задачи могут быть выполнены с помощью Shortcode Core.
  • Плагины Pubmed и Tablesorter используют более грубый подход.

Как мне внедрить такие ресурсы, как файлы JavaScript и CSS?⚓︎

Это делается через интерфейс Grav\Common\Assets.

Как я могу повлиять на заголовки ответов и коды ответов?⚓︎

Вы можете использовать команду php header() для установки заголовков ответов. Последнее, что вы можете сделать, - это во время события onOutputGenerated, после чего выходные данные фактически отправляются клиенту. Сам код ответа может быть задан только в заголовке YAML соответствующей страницы (http_response_code).

  • Плагин Graveyard плагин заменяет ответы 404 NOT FOUND на ответы 410 GONE через заголовок YAML.
  • Плагин Webmention устанавливает заголовок Location в ответе 201 CREATED.

Как включить сторонние библиотеки в свой плагин?⚓︎

Обычно вы включаете другие полные библиотеки во вложенную папку vendor и подключаете его autoload.php там, где это необходимо, в вашем плагине. (Если вы используете Git, подумайте об использовании subtrees)

Как мне расширить Twig?⚓︎

Самый простой способ - следовать примеру Custom Twig Filter/Function в разделе Рецепты Twig.

Также прочтите документацию Twig и разработайте свое расширение. Затем посмотрите на плагин TwigPCRE, чтобы узнать, как включить его в Grav.

Как мне взаимодействовать с внешними API?⚓︎

Grav предоставляет объект Grav\Common\GPM\Response, но ничто не мешает вам сделать это напрямую, если вы того пожелаете.

\ No newline at end of file diff --git a/cookbook/tutorials/create-a-blog/index.html b/cookbook/tutorials/create-a-blog/index.html new file mode 100644 index 00000000..f27176ba --- /dev/null +++ b/cookbook/tutorials/create-a-blog/index.html @@ -0,0 +1,14 @@ + Создание блога - Документация Grav CMS на русском

Создание блога⚓︎

Загрузите и установите локально скелет блога из https://getgrav.org/downloads/skeletons, или, по крайней мере, следите за репозиторием https://github.com/getgrav/grav-skeleton-blog-site. Это пример сайта, который использует тему Antimatter. Наличие запущенного сайта Grav, который уже работает со структурой блога, несомненно, поможет вам, если вы застряли или не понимаете, что делать дальше.

Проверьте, что ваша тема предоставляет шаблоны страниц блога и элементов⚓︎

Давайте начнем с простого: выберите тему, которая уже предоставляет шаблон страницы блога. Например Antimatter, TwentyFifteen, Deliver, Lingonberry, Afterburner2 и многие другие. Как проверить, есть ли в вашей теме шаблон страницы блога? Зайдите в папку /user/themes/[yourtheme]/templates и проверьте наличие файлов blog.html.twig и item.html.twig.

Если вы уже выбрали тему, и ваша тема не поставляется с этими файлами, скопируйте их из Antimatter: https://github.com/getgrav/grav-theme-antimatter/tree/develop/templates

Возможно, вам придется настроить разметку в соответствии с вашей темой. Лучший вариант, если вы только начинаете, - использовать тему, которая уже идет в комплекте.

Создайте структуру страниц блога⚓︎

Есть разные способы структурировать страницы. По умолчанию и проще - иметь родительскую страницу типа Blog и дочерние страницы для сообщений блога.

С плагином админки⚓︎

Создайте страницу типа Blog. Эта страница - "Домашняя страница" блога со списком сообщений блога.

Создайте одну или несколько дочерних страниц типа Item. Это сообщения в блоге.

Вручную⚓︎

Зайдите в свою папку pages/, создайте страницу 01.blog (измените номер, чтобы отразить структуру вашего меню), добавьте в нее файл blog.md. В этот файл добавьте это содержимое:

---
+content:
+    items: '@self.children'
+---
+

Это заставляет Grav перебирать подстраницы (сообщения в блоге).

Создайте подпапку для каждого сообщения, которое хотите добавить, и добавьте в каждую папку файл item.md с содержимым сообщения в блоге.

URL-адреса⚓︎

Структура, описанная выше, будет создавать сообщения блога с /blog/ в URL-адресе. Возможно, это не то, что вам нужно. Например: если блог - это всё, что у вас есть на вашем сайте, а список сообщений блога является домашней страницей. В этих случаях вам просто нужно, чтобы ваш корневой домен имел доступ к этому контенту, а не направлял посетителей в дочерний каталог.

В этом случае в system.yaml (конфигурация системы в админке) установите для параметра home.hide_in_urls (Скрыть home в URL-адресах) значение true.

Внутренняя работа⚓︎

Возможно, вы захотите узнать, как это работает. Шаблон блога, содержимое файла blog.html.twig, находящегося в папке templates/ темы, просто перебирает свои дочерние страницы.

Самый простой способ:

{% set collection = page.collection() %}
+
+{% for child in collection %}
+    {% include 'partials/blog_item.html.twig' with {'blog':page, 'page':child, 'truncate':true} %}
+{% endfor %}
+

page.collection() по умолчанию выбирает свойство content.items из метаданных YAML и возвращает массив, содержащий элементы, соответствующие этому определению.

Если страница содержит:

---
+content:
+    items: '@self.children'
+---
+

тогда collection будет массивом подстраниц текущей страницы.

В этом случае тема включает в себя часть partials/blog_item.html.twig, отвечающую за визуализацию отдельного сообщения в блоге, и передает ему дочерний объект, содержащий фактическое сообщение в блоге для отображения.

Узнать больше⚓︎

\ No newline at end of file diff --git a/cookbook/twig-recipes/index.html b/cookbook/twig-recipes/index.html new file mode 100644 index 00000000..1bed9f38 --- /dev/null +++ b/cookbook/twig-recipes/index.html @@ -0,0 +1,164 @@ + Рецепты Twig - Документация Grav CMS на русском

Рецепты Twig⚓︎

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

Перечисление последних 5 сообщений в блоге⚓︎

Вы хотите отобразить последние 5 сообщений в блоге на боковой панели вашего сайта, чтобы читатель мог видеть последние действия в блоге.

Просто найдите страницу /blog, получите её дочерние элементы, упорядочите их по дате в порядке убывания, а затем получите первые 5 для отображения в списке:

<ul>
+    {% for post in page.find('/blog').published.order('date', 'desc').slice(0, 5) %}
+        <li class="recent-posts">
+            <strong><a href="{{ post.url }}">{{ post.title }}</a></strong>
+        </li>
+    {% endfor %}
+</ul>
+

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

twig_first: true
+process:
+    twig: true
+

Добавление немодульных навигационных ссылок⚓︎

Вы хотите отображать навигационные ссылки с немодульных страниц.

<div class="desktop-nav__navigation">
+    {% for page in pages.children %}
+        {% if page.visible %}
+            {% set current_page = (page.active or page.activeChild) ? 'active' : '' %}
+            <a class="desktop-nav__nav-link {{ current_page }}" href="{{ page.url }}">
+                {{ page.menu }}
+            </a>
+        {% endif %}
+    {% endfor %}
+</div>
+

Перечисление постов в блоге за год⚓︎

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

Просто найдите страницу /blog, получите её дочерние элементы, отфильтруйте по соответствующему dateRange() и упорядочите их по дате в порядке убывания:

<ul>
+    {% set this_year = "now"|date('Y') %}
+    {% for post in page.find('/blog').children.dateRange('01/01/' ~ this_year, '12/31/' ~ this_year).order('date', 'desc') %}
+        <li class="recent-posts">
+            <strong><a href="{{ post.url }}">{{ post.title }}</a></strong>
+        </li>
+    {% endfor %}
+</ul>
+

Отображение переведенного месяца⚓︎

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

Есть два решения этой проблемы.

Первый подход⚓︎

Первый предполагает использование расширения Twig intl.

Установите https://github.com/Perlkonig/grav-plugin-twig-extensions. Убедитесь, что у вас установлено расширение PHP intl.

В вашем шаблоне замените, например (как в теме Antimatter) {{ page.date | date (" M ") }} на {{ page.date | localizeddate ('long', 'none', 'it', 'Europe / Rome', 'MMM')}} (укажите здесь свой язык и часовой пояс)

Второй подход⚓︎

Предположим, у вас есть настройки языковых переводов в папке user/languages​​/ под названием en.yaml, которая содержит запись:

MONTHS_OF_THE_YEAR: [January, February, March, April, May, June, July, August, September, October, November, December]
+

И ru.yaml:

MONTHS_OF_THE_YEAR: [Январь, Февраль, Март, Апрель, Май, Июнь, Июль, Август, Сентябрь, Октябрь, Ноябрь, Декабрь]
+

Тогда можно использовать Twig:

<li>
+    <a href='{{ post.url }}'><aside class="dates">{{ 'GRAV.MONTHS_OF_THE_YEAR'|ta(post.date|date('n') - 1) }} {{ post.date|date('d') }}</aside></a>
+    <a href='{{ post.url }}'>{{ post.title }}</a>
+</li>
+

Это использует настраиваемый фильтр Grav Twig |ta, который означает Translate Array. В английской версии результат может быть примерно таким:

An Example Post  July 2015
+

А на русском:

Статья-пример  Июль 2015
+

Отображение содержимого страницы без тизера⚓︎

Вы хотите отображать содержимое страницы без тизера вверху.

Используйте фильтр slice, чтобы удалить тизер из содержимого страницы:

{% set content = page.content|slice(page.summary|length) %}
+{{ content }}
+

Скрытие имейла от спам-ботов⚓︎

Вы хотите скрыть имейл от спам-ботов

Включите обработку Twig в шапке страницы:

process:
+    twig: true
+

Затем используйте фильтр Twig safe_email:

<a href="mailto:{{'your.email@server.com'|safe_email}}">
+  Email me
+</a>
+

Выбор случайного элемента из переведенного массива⚓︎

Вы хотите выбрать случайный элемент из массива, переведенного на определённый язык. Для этого предполагается, что у вас есть многоязычный сайт, настроенный в соответствии с документацией.

Предположим также, что у вас есть настройки языковых переводов в папке user/languages​​/ под названием en.yaml, которая содержит запись:

FRUITS: [Banana, Cherry, Lemon, Lime, Strawberry, Raspberry]
+

И ru.yaml:

FRUITS: [Банан, Вишня, Лимон, Лайм, Клубника, Малина]
+

Тогда можно использовать Twig:

{% set langobj  = grav['language'] %}
+{% set curlang  = langobj.getLanguage() %}
+{% set fruits   = langobj.getTranslation(curlang,'FRUITS',true) %}
+<span data-ticker="{{ fruits|join(',') }}">{{ random(fruits) }}</span>
+

Отображение изображения, загруженного в поле файла⚓︎

Вы добавили поле типа file в свой собственный чертеж и хотите отобразить изображение, добавленное в это поле.

Поскольку поле file позволяет загружать несколько изображений, оно генерирует два вложенных объекта в вашем блоке метаданных, первый объект - это список загруженных изображений, вложенный объект внутри - это группа свойств/значений для данного изображения.

Обратите внимание, что в случае, когда вы хотите, чтобы ваш пользователь выбирал только одно изображение, было бы проще использовать поле filepicker, которое хранит один объект со свойствами выбранных изображений.

Если у вас есть одно изображение, вы можете отобразить его в своем шаблоне, используя:

{{ page.media[header.yourfilefield|first.name] }}
+

Если вы разрешили пользователю загружать несколько изображений, ваша разметка на Twig могла бы выглядеть так:

{% for imagesuploaded in page.header.yourfilefield %}
+{{ page.media[imagesuploaded.name] }}
+{% endfor %}
+

Отображение изображения, выбранного в поле mediapicker⚓︎

Вы добавили поле mediapicker в свой собственный чертеж и хотите отобразить выбранное изображение.

Поле mediapicker может быть добавлено к вашему чертежу, как показано ниже:

header.myimage:
+  type: mediapicker
+  folder: 'self@'
+  label: Select a file
+  preview_images: true
+

Поле mediapicker хранит путь к изображению в виде строки, такой как /home/background.jpg. Чтобы получить доступ к этому изображению с помощью функции мультимедиа страницы, вы должны разделить эту строку и получить:

  • путь к странице, где хранится это изображение
  • название изображения.

Вы можете сделать это через Twig, используя приведенный ниже фрагмент:

{% set image_parts = pathinfo(header.myimage) %}
+{% set image_basename = image_parts.basename %}
+{% set image_page = image_parts.dirname == '.' ? page : page.find(image_parts.dirname) %}
+
+{{ image_page.media[image_basename].html()|raw }}
+

Пользовательский фильтр/функция Twig⚓︎

Иногда вам нужна некоторая логика в Twig, которая может быть реализована только в PHP, поэтому лучшим решением является создание пользовательского фильтра или функции Twig. Фильтр обычно добавляется к строке в формате: "некоторая строка"|custom_filter, и функция может принимать строку или любой другой тип переменной: custom_function("some string"), но по сути они очень похожи.

Вы также можете передать дополнительные параметры, например: "some string"|custom_filter('foo', 'bar'), где дополнительные параметры можно использовать внутри фильтра. И вариант функции будет: custom_function("some string", 'foo', 'bar').

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

Лучший способ добавить эту дополнительную функциональность - добавить логику в свой собственный плагин, хотя добавление её в php-файл вашей темы также является вариантом. В этом примере мы будем использовать плагин для простоты. Сначала вам нужно установить плагин DevTools, чтобы сделать создание плагина простым процессом на основе мастера:

bin/gpm install devtools
+

Затем вам нужно создать свой новый настраиваемый плагин, а затем ввести свои данные при появлении запроса.

bin/plugin devtools new-plugin
+
+Enter Plugin Name: ACME Twig Filters
+Enter Plugin Description: Plugin for custom Twig filters
+Enter Developer Name: ACME, Inc.
+Enter GitHub ID (can be blank):
+Enter Developer Email: hello@acme.com
+
+SUCCESS plugin ACME Twig Filters -> Created Successfully
+
+Path: /Users/joe/grav/user/plugins/acme-twig-filters
+

По умолчанию этот скелетный каркас для нового плагина добавит на вашу страницу какой-то фиктивный тест через событие onPageContentRaw(). Сначала вам нужно заменить эту функциональность на код, который прослушивает событие onTwigInitialized():

<?php
+
+public function onPluginsInitialized()
+{
+    // Don't proceed if we are in the admin plugin
+    if ($this->isAdmin()) {
+        return;
+    }
+
+    // Enable the main event we are interested in
+    $this->enable([
+        'onTwigInitialized' => ['onTwigInitialized', 0]
+    ]);
+}
+
+/**
+ * @param Event $e
+ */
+public function onTwigInitialized(Event $e)
+{
+
+}
+

Сначала нам нужно зарегистрировать фильтр в методе onTwigInitialized():

<?php
+
+/**
+ * @param Event $e
+ */
+public function onTwigInitialized(Event $e)
+{
+    $this->grav['twig']->twig()->addFilter(
+        new \Twig_SimpleFilter('chunker', [$this, 'chunkString'])
+    );
+}
+

Первый параметр метода регистрирует chunker как имя фильтра, а chunkString как метод PHP, в котором возникает логика. Итак, нам нужно создать следующее:

<?php
+
+/**
+ * Break a string up into chunks
+ */
+public function chunkString($string, $chunksize = 4, $delimiter = '-')
+{
+    return (trim(chunk_split($string, $chunksize, $delimiter), $delimiter));
+}
+

Теперь вы можете попробовать это в своих шаблонах Twig следующим образом:

{{ "ER27XV3OCCDPRJK5IVSDME6D6OT6QHK5"|chunker }}
+

Что даст:

ER27-XV3O-CCDP-RJK5-IVSD-ME6D-6OT6-QHK5
+

или вы можете передать дополнительные параметры:

{{ "ER27XV3OCCDPRJK5IVSDME6D6OT6QHK5"|chunker(8, '|') }}
+

который даст:

ER27XV3O|CCDPRJK5|IVSDME6D|6OT6QHK5
+

Наконец, если вы хотите, чтобы это было доступно через функцию, а не только через фильтр, вы можете просто зарегистрировать функцию Twig с тем же именем в методе onTwigInitialized():

<?php
+
+/**
+ * @param Event $e
+ */
+public function onTwigInitialized(Event $e)
+{
+    $this->grav['twig']->twig()->addFilter(
+        new \Twig_SimpleFilter('chunker', [$this, 'chunkString'])
+    );
+    $this->grav['twig']->twig()->addFunction(
+        new \Twig_SimpleFunction('chunker', [$this, 'chunkString'])
+    );
+}
+

И тогда вы можете использовать синтаксис функции:

{{ chunker("ER27XV3OCCDPRJK5IVSDME6D6OT6QHK5", 8, '|') }}
+

Расширение базового шаблона унаследованной темы⚓︎

Иногда нужно расширить сам базовый шаблон. Это может произойти, когда нет простого и очевидного способа расширить блоки, уже присутствующие в шаблоне. Давайте использовать Quark в качестве примера для родительской темы, и вы хотите расширить файл themes/quark/templates/partials/base.html.twig вашей темой myTheme.

Вы можете добавить Quark в качестве пространства имен Twig, используя тему my-theme.php для прослушивания события onTwigLoader и добавления каталога шаблона Quark. Содержание класса должно быть примерно таким:

<?php
+
+namespace Grav\Theme;
+
+use Grav\Common\Grav;
+use Grav\Common\Theme;
+
+class MyTheme extends Quark {
+    public static function getSubscribedEvents() {
+        return [
+            'onTwigLoader' => ['onTwigLoader', 10]
+        ];
+    }
+
+    public function onTwigLoader() {
+        parent::onTwigLoader();
+
+        // add quark theme as namespace to twig
+        $quark_path = Grav::instance()['locator']->findResource('themes://quark');
+        $this->grav['twig']->addPath($quark_path . DIRECTORY_SEPARATOR . 'templates', 'quark');
+    }
+}
+

Теперь в файле themes/my-theme/templates/partials/base.html.twig можно расширить базовый шаблон Quark следующим образом:

    {% extends '@quark/partials/base.html.twig' %}
+
+    {% block header %}
+    This is a new extended header.
+    {% endblock %}
+
\ No newline at end of file diff --git a/extra.css b/extra.css new file mode 100644 index 00000000..1dd61377 --- /dev/null +++ b/extra.css @@ -0,0 +1,9 @@ +.md-footer-meta__inner { + justify-content: center; +} +.md-source__facts { + display: none; +} +.md-copyright__highlight { + text-align: center; +} diff --git a/extra.js b/extra.js new file mode 100644 index 00000000..e97be271 --- /dev/null +++ b/extra.js @@ -0,0 +1 @@ +(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(87173682, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true }); \ No newline at end of file diff --git a/forms/blueprints/advanced-features/index.html b/forms/blueprints/advanced-features/index.html new file mode 100644 index 00000000..f695b800 --- /dev/null +++ b/forms/blueprints/advanced-features/index.html @@ -0,0 +1,143 @@ + Расширенные возможности чертежей - Документация Grav CMS на русском

Расширенные возможности чертежей⚓︎

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

Определение правил проверки⚓︎

Если вам нужны одни и те же правила проверки несколько раз, вы можете создать для них свое собственное правило.

rules:
+  slug:
+    pattern: "[a-z][a-z0-9_\-]+"
+    min: 2
+    max: 80
+form:
+  fields:
+    folder:
+      type: text
+      label: Folder Name
+      validate:
+        rule: slug
+

В приведенном выше примере создается правило slug, которое затем используется в поле папки формы.

Расширение базового типа (extends@)⚓︎

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

extends@: default
+

В расширенном формате вы можете указать контекст поиска для вашего базового файла:

extends@:
+  type: default
+  context: blueprints://pages
+

Вы также можете расширить сам проект, если существует несколько версий одного и того же чертежа.

extends@: parent@
+

Нет ограничений на количество чертежей, которые вы можете расширить. Поля, определённые в первом чертеже, будут заменены любыми более поздними чертежами в списке.

extends@:
+  - parent@
+  - type: default
+    context: blueprints://pages
+

Понимание свойств типа и контекста⚓︎

В приведенных выше примерах type ссылается на файл, а context — на путь. Свойство context использует Потоки, что означает, что оно разрешается в физическое местоположение.

context: blueprints:// по умолчанию будет давать /user/plugins/admin/blueprints, папку чертежей администратора. type: default при поиске файлов даст default.yaml. Поскольку эти два свойства используются вместе, они дают полный путь, понятный Grav: /user/plugins/admin/blueprints/default.yaml.

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

Форма встраивания (import@)⚓︎

Иногда вам может потребоваться совместное использование некоторых полей или подформ между несколькими формами.

Создадим blueprints://partials/gallery.yaml, который мы хотим встроить в нашу форму:

form:
+  fields:
+    gallery.images:
+      type: list
+      label: Images
+      fields:
+        .src:
+          type: text
+          label: Image
+

В нашей форме есть раздел, в который мы хотели бы вставить изображения галереи:

form:
+  fields:
+    images:
+        type: section
+        title: Images
+        underline: true
+        import@:
+          type: partials/gallery
+          context: blueprints://
+

Хотя YAML не позволяет использовать один и тот же ключ import@ несколько раз, вы все равно можете импортировать несколько чертежей, добавив уникальный номер после @, например import@1,import@2 и так далее. Число не имеет другого значения, кроме предотвращения ошибок парсера YAML:

form:
+  fields:
+    images:
+        type: section
+        title: Images
+        underline: true
+        import@1:
+          type: partials/gallery
+          context: blueprints://
+        import@2:
+          type: partials/another-gallery
+          context: blueprints://
+

Удаление полей / свойств (unset-*@)⚓︎

Если вы хотите удалить поле, вы можете добавить в него unset@: true. Если вы хотите удалить свойство поля, вы просто добавляете имя свойства, например: unset-options@ удаляет все параметры.

Замена полей / свойств (replace-*@)⚓︎

По умолчанию в чертежах используется глубокое объединение свойств. Иногда вместо объединения содержимого поля вы хотите начать с чистой таблицы. Если вы хотите заменить все поле, ваше новое поле должно начинаться с replace@:

author.name:
+  replace@: true
+  type: text
+  label: Author name
+

В результате author.name будет иметь только два свойства:type и label независимо от того, что форма имела раньше. Вы можете сделать то же самое для отдельных свойств:

summary.enabled:
+  replace-options@: true
+  options:
+    0: Yeah
+    1: Nope
+    2: Do not care
+

Примечание: replace-*@ является псевдонимом для unset-*@.

Использование конфигурации (config-*@)⚓︎

Бывают случаи, когда вы можете захотеть получить значение по умолчанию из конфигурации Grav. Например, вы можете захотеть, чтобы в поле автора по умолчанию был указан автор сайта:

form:
+  fields:
+    author:
+      type: text
+      label: Author
+      config-default@: site.author.name
+

Если имя автора вашего сайта - John Doe, форма эквивалентна:

form:
+  fields:
+    author:
+      type: text
+      label: Author
+      default: "John Doe"
+

Вы можете использовать config-*@ для любого поля; например, если вы хотите изменить поле type, вы можете просто иметь config-type @: site.forms.author.type, чтобы вы могли изменить тип поля ввода из вашей конфигурации.

Использование вызовов функций (data-*@)⚓︎

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

Например, мы редактируем страницу и хотим иметь поле, которое позволяет нам изменить её родительский элемент или, другими словами, переместить страницу в другое место. Для этого нам нужно значение по умолчанию, указывающее на текущее местоположение, а также список опций, который состоит из всех возможных местоположений. Для этого нам нужен способ спросить у Grav

form:
+  fields:
+    route:
+      type: select
+      label: Parent
+      classes: fancy
+      data-default@: '\Grav\Plugin\Admin::route'
+      data-options@: '\Grav\Common\Page\Pages::parentsRawRoutes'
+      options:
+        '/': '- Root -'
+

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

form:
+  fields:
+    route:
+      type: select
+      label: Parent
+      classes: fancy
+      default: /team
+      options:
+        '/': '- Root -'
+        '/home': 'Home'
+        '/team': 'Team'
+        '/team/ceo': '  Meet Our CEO'
+        ...
+

Хотя data-default@: и data-options@:, вероятно, являются наиболее часто используемыми свойствами динамических полей, вы не ограничены ими. Нет никаких ограничений на то, какие свойства вы можете получить, включая type, label, validate и даже fields в текущем поле.

Кроме того, вы можете передавать параметры в вызов функции, просто используя массив, где первое значение — это имя функции, а параметры следуют:

  data-default@: ['\Grav\Theme\ImaginaryClass::getMyDefault', 'default', false]
+

Изменение порядка полей⚓︎

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

Если вы хотите создать поле, вы можете указать его порядок, используя свойство ordering@. Это поле может содержать имя поля или целое число (-1 = первый элемент).

Вот пример:

form:
+  fields:
+    route:
+      ordering@: -1
+      type: select
+      label: Parent
+      classes: fancy
+      default: /team
+      options:
+        '/': '- Root -'
+        '/home': 'Home'
+        '/team': 'Team'
+        '/team/ceo': '  Meet Our CEO'
+        ...
+

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

Вот ещё один пример:

form:
+  fields:
+    author:
+      ordering@: header.title
+      type: text
+      label: Author
+      default: "John Doe"
+

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

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

Создание нового типа поля формы⚓︎

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

<?php
+/**
+ * Get list of form field types specified in this plugin. Only special types needs to be listed.
+ *
+ * @return array
+ */
+public function getFormFieldTypes()
+{
+    return [
+        'display' => [
+            'input@' => false
+        ],
+        'spacer' => [
+            'input@' => false
+        ]
+    ];
+}
+

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

Вы можете добавить любые пары ключ: значение, включая динамические свойства, такие как data-options@, которые будут автоматически добавляться к полям.

onBlueprintCreated или доступ к данным чертежа⚓︎

Поскольку чертежи состоят из полей с точками, при получении вложенного поля из чертежа используется нотация / вместо нотации ..

<?php
+$tabs = $blueprint->get('form/fields/tabs');
+

Это позволяет получить доступ к специальным полям данных, например:

<?php
+$name = $blueprint->get('form/fields/content.name');
+$name = $blueprint->get('form/fields/content/fields/.name');
+

Для обратной совместимости вы можете указать разделитель в последнем (третьем) параметре set() и get().

<?php
+$tabs = $blueprint->get('form/fields/tabs', null, '/');
+
\ No newline at end of file diff --git a/forms/blueprints/blueprints_1.png b/forms/blueprints/blueprints_1.png new file mode 100644 index 00000000..85fb1965 Binary files /dev/null and b/forms/blueprints/blueprints_1.png differ diff --git a/forms/blueprints/blueprints_2.png b/forms/blueprints/blueprints_2.png new file mode 100644 index 00000000..4e69d848 Binary files /dev/null and b/forms/blueprints/blueprints_2.png differ diff --git a/forms/blueprints/blueprints_3.png b/forms/blueprints/blueprints_3.png new file mode 100644 index 00000000..0c5855c5 Binary files /dev/null and b/forms/blueprints/blueprints_3.png differ diff --git a/forms/blueprints/example-config-blueprints/index.html b/forms/blueprints/example-config-blueprints/index.html new file mode 100644 index 00000000..ff507e27 --- /dev/null +++ b/forms/blueprints/example-config-blueprints/index.html @@ -0,0 +1,24 @@ + Чертежи конфигурации - Документация Grav CMS на русском

Пример: чертежи конфигурации⚓︎

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

Чтобы сделать эти параметры настраиваемыми через панель админки, добавьте несколько полей в user/blueprints/config/site.yaml. Например:

extends@: '@parent'
+
+form:
+  fields:
+    content:
+      fields:
+        myfield:
+          type: text
+          label: My Field
+

Добавит тип ввода «Мое поле», добавив его в раздел «Контент» конфигурации сайта.

Вы также можете добавлять целые новые разделы, например:

extends@: '@parent'
+
+form:
+  fields:
+    anothersection:
+      type: section
+      title: Another Section
+      underline: true
+
+      fields:
+        myfield:
+          type: text
+          label: A label
+          size: large
+
\ No newline at end of file diff --git a/forms/blueprints/example-page-blueprint/index.html b/forms/blueprints/example-page-blueprint/index.html new file mode 100644 index 00000000..c3f30fa8 --- /dev/null +++ b/forms/blueprints/example-page-blueprint/index.html @@ -0,0 +1,107 @@ + Чертежи страниц - Документация Grav CMS на русском

Пример: чертежи страниц⚓︎

Чертежи страниц расширяются от страницы по умолчанию и дают вам возможность добавлять параметры. По сути, пользовательские страницы можно оживить, используя чертежи страниц. С помощью чертежа страницы вы можете на 100% настроить форму редактирования для страницы, как она отображается в админке.

Пример первый⚓︎

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

Это будет использовать форму страницы по умолчанию и добавить текстовое поле на вкладку Дополнительно в разделе Переопределения:

title: Gallery
+'@extends':
+    type: default
+    context: blueprints://pages
+
+form:
+  fields:
+    tabs:
+      type: tabs
+      active: 1
+
+      fields:
+        advanced:
+          fields:
+            overrides:
+              fields:
+                header.an_example_text_field:
+                  type: text
+                  label: Add a number
+                  default: 5
+                  validate:
+                    required: true
+                    type: int
+

Вместо этого будет добавлена ​​новая вкладка Галерея с некоторыми полями.

title: Gallery
+'@extends':
+    type: default
+    context: blueprints://pages
+
+form:
+  fields:
+    tabs:
+      type: tabs
+      active: 1
+
+      fields:
+        gallery:
+          type: tab
+          title: Gallery
+
+          fields:
+            header.an_example_text_field:
+              type: text
+              label: Add a number
+              default: 5
+              validate:
+                required: true
+                type: int
+
+            header.an_example_select_box:
+              type: select
+              label: Select one of the following
+              default: one
+              options:
+                one: One
+                two: Two
+                three: Three
+

Типы полей, которые вы можете добавить, перечислены в главе Доступные поля формы для использования в админке

Как именовать поля⚓︎

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

Создайте полностью настраиваемую форму страницы⚓︎

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

Например:

title: Gallery
+
+form:
+  fields:
+    tabs:
+      type: tabs
+      active: 1
+
+      fields:
+        gallery:
+          type: tab
+          title: Gallery
+
+          fields:
+            header.an_example_text_field:
+              type: text
+              label: Add a number
+              default: 5
+              validate:
+                required: true
+                type: int
+
+            header.an_example_select_box:
+              type: select
+              label: Select one of the following
+              default: one
+              options:
+                one: One
+                two: Two
+                three: Three
+
+            route:
+              type: parents
+              label: PLUGIN_ADMIN.PARENT
+              classes: fancy
+

Поле route изменилось в Grav 1.7. Пожалуйста, обновите существующие чертежи для использования нового type: parents.

Примечание для экспертного режима⚓︎

При редактировании страниц в режиме Expert чертеж не читается, и форма страницы одинакова для всех страниц. Это связано с тем, что в экспертном режиме вы редактируете поля страницы непосредственно в поле Frontmatter, и нет необходимости в настраиваемой презентации.

Где разместить чертежи страницы⚓︎

Чтобы плагин админки собирал чертежи и, таким образом, отображал новые типы страниц, вам необходимо разместить чертежи в правильном месте.

В пользовательской папке Blueprints⚓︎

Поместите их в user/blueprints/pages/. Это хорошее место для их размещения, когда вы просто хотите, чтобы ваши чертежи присутствовали на вашем сайте.

В теме⚓︎

Поместите их в user/themes/YOURTHEME/blueprints/. Это лучше всего, если вы также собираетесь распространять свою тему: тема будет содержать чертежи страниц, и её будет проще использовать.

В папке Data⚓︎

Если вы используете тему на основе Gantry5, лучшее место - user/data/gantry5/themes/YOURTHEME/blueprints/, иначе ваши файлы могут быть потеряны во время обновления темы.

В плагине⚓︎

Поместите их в user/plugins/YOURPLUGIN/blueprints/. Это место, куда их можно поместить, если вы определяете и добавляете пользовательские страницы в плагин.

Затем подпишитесь на событие onGetPageBlueprints и добавьте их в Grav. В следующем примере добавляются чертежи из папки blueprints/.

<?php
+
+public static function getSubscribedEvents()
+{
+  return [
+    'onGetPageBlueprints' => ['onGetPageBlueprints', 0]
+
+  ];
+}
+
+public function onGetPageBlueprints($event)
+{
+  $types = $event->types;
+  $types->scanBlueprints('plugins://' . $this->name . '/blueprints');
+}
+
\ No newline at end of file diff --git a/forms/blueprints/example-plugin-blueprint/index.html b/forms/blueprints/example-plugin-blueprint/index.html new file mode 100644 index 00000000..fbaa54e1 --- /dev/null +++ b/forms/blueprints/example-plugin-blueprint/index.html @@ -0,0 +1,35 @@ + Чертеж плагина - Документация Grav CMS на русском

Пример: чертеж плагина⚓︎

Чертеж плагина дает Grav представление о том, что такое плагин, его источник, информация о поддержке и авторе, зависимости и поля формы, используемые для администрирования плагина в Grav Admin.

В качестве примера вот чертеж для плагина:

name: Assets
+slug: assets
+type: plugin
+version: 1.0.4
+description: "This plugin provides a convenient way to add CSS and JS assets directly from your pages."
+icon: list-alt
+author:
+  name: Team Grav
+  email: devs@getgrav.org
+  url: https://getgrav.org
+homepage: https://github.com/getgrav/grav-plugin-assets
+demo: https://learn.getgrav.org
+keywords: assets, javascript, css, inline
+bugs: https://github.com/getgrav/grav-plugin-assets/issues
+license: MIT
+
+dependencies:
+  - { name: afterburner2 }
+  - { name: github }
+  - { name: email, version: '~2.0' }
+

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

Свойство Описание
name* Это название ресурса. Избегайте добавления плагинов или тем, в этом нет необходимости.
slug* Это уникальный идентификатор ресурса, он также используется для определения имени папки, в которой хранится ресурс, например user/plugins/__slug__
type* Это тип ресурса, он должен быть либо plugin, либо theme
version* Версия ресурса. Это значение всегда должно меняться постепенно с каждым выпуском. Вы также должны следовать стандарту semver.
description* Описание вашего ресурса. Пожалуйста, не превышайте 200 символов. Описание должно быть кратким и по существу. При необходимости вы можете использовать синтаксис Markdown. Также неплохо заключить описание в цитату marks.
icon* Значок - это то, что будет использоваться на getgrav.org. На этом этапе мы используем библиотеку значков FontAwesome, поэтому, если вы разрабатываете новый плагин или тему, ваша работа должна быть выбранный вами значок ещё не используется. В противном случае нам придется поменять его за вас.
screenshot (не обязательно) Снимок экрана используется только темами и полностью игнорируется плагинами. Для тем это будет имя файла снимка экрана, который поставляется с темой (по умолчанию: screenshot.jpg). Если у вас есть изображение screenshot.jpg в корне вашей темы, вы можете не использовать это свойство. Наш репозиторий автоматически подберет его.
author.name* ФИО разработчика
author.email (не обязательно) Электронная почта разработчика.
author.url (не обязательно) Домашняя страница разработчика.
homepage (не обязательно) Если у вас есть специальная домашняя страница для вашего ресурса, это место для него.
docs (не обязательно) Если у вас есть документация для вашего ресурса, можно указать её здесь.
demo (не обязательно) Если у вас есть демо-версия вашего ресурса, укажите её здесь.
guide (не обязательно) Если у вас есть учебные пособия или руководства по использованию вашего ресурса, укажите их здесь.
keywords (не обязательно) Хотя реального использования ключевых слов пока нет, можно перечислить их здесь, разделив запятыми.
bugs (не обязательно) URL-адрес, по которому можно сообщить об ошибках, обычно это ссылка на GitHub issues ссылка.
license (не обязательно) Тип лицензии вашего ресурса (MIT, GPL и т. д.). Рекомендуется всегда предоставлять файл LICENSE вместе с вашим ресурсом.
dependencies (не обязательно) Список зависимостей, которые требуются плагину/теме. По умолчанию для их установки используется GPM, однако, если указан необязательный URL-адрес репозитория GIT, возможна также установка прямо из репозитория. Также, если вы используете массив, вы можете явно определить имя и версию, используя версии пакетов в стиле Composer
gpm (не обязательно) Следует ли получать обновления через GPM. Установите значение false, чтобы отключить обновления GPM для ресурсов, не относящихся к GPM.

Вот пример идентификационной части плагина GitHub:

name: GitHub
+slug: github
+type: plugin
+version: 1.0.1
+description: "This plugin wraps the [GitHub v3 API](https://developer.github.com/v3/) and uses the [php-github-api](https://github.com/KnpLabs/php-github-api/) library to add a nice GitHub touch to your Grav pages."
+icon: github
+author:
+  name: Team Grav
+  email: devs@getgrav.org
+  url: https://getgrav.org
+homepage: https://github.com/getgrav/grav-plugin-github
+keywords: github, plugin, api
+bugs: https://github.com/getgrav/grav-plugin-github/issues
+license: MIT
+

Чертежи тем работают по тому же принципу.

\ No newline at end of file diff --git a/forms/blueprints/example-plugin-configuration/index.html b/forms/blueprints/example-plugin-configuration/index.html new file mode 100644 index 00000000..1995b6b0 --- /dev/null +++ b/forms/blueprints/example-plugin-configuration/index.html @@ -0,0 +1,66 @@ + Конфигурация плагина - Документация Grav CMS на русском

Пример: конфигурация плагина⚓︎

Мы видели в предыдущем примере, как создать чертеж для плагина и/или темы.

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

Если вы хотите, чтобы у вашего плагина (или темы) были параметры, настраиваемые напрямую из админки, вам необходимо заполнить файл blueprints.yaml формами.

Например, вот файл archives.yaml плагина Archives:

enabled: true
+built_in_css: true
+date_display_format: 'F Y'
+show_count: true
+limit: 12
+order:
+    by: date
+    dir: desc
+filter_combinator: and
+filters:
+    category: blog
+

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

Предоставляя правильно отформатированный файл blueprints.yaml, вы можете разрешить пользователю изменять настройки из админки. Когда настройки сохраняются, они автоматически записываются в /user/config/plugins/archives.yaml (или в config/themes, если это тема). Структура начинается следующим образом:

name: Archives
+version: 1.3.0
+description: The **Archives** plugin creates links for pages grouped by month/year
+icon: university
+author:
+  name: Team Grav
+  email: devs@getgrav.org
+  url: https://getgrav.org
+homepage: https://github.com/getgrav/grav-plugin-archives
+demo: http://demo.getgrav.org/blog-skeleton
+keywords: archives, plugin, blog, month, year, date, navigation, history
+bugs: https://github.com/getgrav/grav-plugin-archives/issues
+license: MIT
+
+form:
+  validation: strict
+  fields:
+

А вот и та часть, которая нам нужна. Каждому полю в файле archives.yaml нужен соответствующий элемент формы, например:

Переключатель

enabled:
+  type: toggle
+  label: Plugin status
+  highlight: 1
+  default: 1
+  options:
+      1: Enabled
+      0: Disabled
+  validate:
+       type: bool
+

Список выбора

date_display_format:
+  type: select
+  size: medium
+  classes: fancy
+  label: Date Format
+  default: 'jS M Y'
+  options:
+    'F jS Y': "January 1st 2014"
+    'l jS of F': "Monday 1st of January"
+    'D, m M Y': "Mon, 01 Jan 2014"
+    'd-m-y': "01-01-14"
+    'jS M Y': "10th Feb 2014"
+

Текстовое поле

limit:
+  type: text
+  size: x-small
+  label: Count Limit
+  validate:
+    type: number
+    min: 1
+

Корневой элемент (в этих примерах enabled, date_display_format, limit) - это имя параметра. Дополнительные компоненты каждого поля определяют, как это поле отображается. Например, его тип (type), его размер (size), показанная метка (label) и дополнительная полезная подсказка, которая появляется при наведении курсора (help). default и placeholder позволяют вам создавать некоторые значения по умолчанию и улучшать отображение полей для пользователя.

Остальные поля могут меняться в зависимости от типа поля. Например, для типа поля select требуется и список options.

Вложенные параметры доступны через точечную нотацию (например, order.dir)

order.dir:
+  type: toggle
+  label: Order Direction
+  highlight: asc
+  default: desc
+  options:
+    asc: Ascending
+    desc: Descending
+

Плагин Admin определяет множество других типов полей, которые можно использовать, в plugins/admin/themes/grav/templates/forms/fields.

Важно отметить, что когда для параметра form.validation установлено значение strict, как в примере с плагином Archives, вам необходимо добавить чертежи форм для всех параметров, иначе при сохранении появится сообщение об ошибке. Если вы вместо этого хотите разрешить настраивать только пару полей в интерфейсе администратора, а не все из них, установите для параметра form.validation значение loose.

\ No newline at end of file diff --git a/forms/blueprints/fields-available/array_field_bp.gif b/forms/blueprints/fields-available/array_field_bp.gif new file mode 100644 index 00000000..fc9102ec Binary files /dev/null and b/forms/blueprints/fields-available/array_field_bp.gif differ diff --git a/forms/blueprints/fields-available/checkbox_field.gif b/forms/blueprints/fields-available/checkbox_field.gif new file mode 100644 index 00000000..06494fb0 Binary files /dev/null and b/forms/blueprints/fields-available/checkbox_field.gif differ diff --git a/forms/blueprints/fields-available/checkboxes_field.gif b/forms/blueprints/fields-available/checkboxes_field.gif new file mode 100644 index 00000000..0c25f006 Binary files /dev/null and b/forms/blueprints/fields-available/checkboxes_field.gif differ diff --git a/forms/blueprints/fields-available/colorpicker_field.png b/forms/blueprints/fields-available/colorpicker_field.png new file mode 100644 index 00000000..dc45535d Binary files /dev/null and b/forms/blueprints/fields-available/colorpicker_field.png differ diff --git a/forms/blueprints/fields-available/columns_field_bp.gif b/forms/blueprints/fields-available/columns_field_bp.gif new file mode 100644 index 00000000..65c684f2 Binary files /dev/null and b/forms/blueprints/fields-available/columns_field_bp.gif differ diff --git a/forms/blueprints/fields-available/dateformat_field_bp.gif b/forms/blueprints/fields-available/dateformat_field_bp.gif new file mode 100644 index 00000000..c6957da1 Binary files /dev/null and b/forms/blueprints/fields-available/dateformat_field_bp.gif differ diff --git a/forms/blueprints/fields-available/datetime_field.gif b/forms/blueprints/fields-available/datetime_field.gif new file mode 100644 index 00000000..96c4b3f8 Binary files /dev/null and b/forms/blueprints/fields-available/datetime_field.gif differ diff --git a/forms/blueprints/fields-available/display_field.jpg b/forms/blueprints/fields-available/display_field.jpg new file mode 100644 index 00000000..f3cb925b Binary files /dev/null and b/forms/blueprints/fields-available/display_field.jpg differ diff --git a/forms/blueprints/fields-available/editor_field_bp.gif b/forms/blueprints/fields-available/editor_field_bp.gif new file mode 100644 index 00000000..e82961c7 Binary files /dev/null and b/forms/blueprints/fields-available/editor_field_bp.gif differ diff --git a/forms/blueprints/fields-available/elements_field.gif b/forms/blueprints/fields-available/elements_field.gif new file mode 100644 index 00000000..1c36ea1e Binary files /dev/null and b/forms/blueprints/fields-available/elements_field.gif differ diff --git a/forms/blueprints/fields-available/field_list_1.png b/forms/blueprints/fields-available/field_list_1.png new file mode 100644 index 00000000..77a025a3 Binary files /dev/null and b/forms/blueprints/fields-available/field_list_1.png differ diff --git a/forms/blueprints/fields-available/fieldset-gif.gif b/forms/blueprints/fields-available/fieldset-gif.gif new file mode 100644 index 00000000..7e1e5e13 Binary files /dev/null and b/forms/blueprints/fields-available/fieldset-gif.gif differ diff --git a/forms/blueprints/fields-available/file_field_bp.gif b/forms/blueprints/fields-available/file_field_bp.gif new file mode 100644 index 00000000..688a32a2 Binary files /dev/null and b/forms/blueprints/fields-available/file_field_bp.gif differ diff --git a/forms/blueprints/fields-available/filepicker_field.png b/forms/blueprints/fields-available/filepicker_field.png new file mode 100644 index 00000000..822c34d8 Binary files /dev/null and b/forms/blueprints/fields-available/filepicker_field.png differ diff --git a/forms/blueprints/fields-available/index.html b/forms/blueprints/fields-available/index.html new file mode 100644 index 00000000..8de4eb9b --- /dev/null +++ b/forms/blueprints/fields-available/index.html @@ -0,0 +1,319 @@ + Чертеж полей формы - Документация Grav CMS на русском

Ссылка: чертеж полей формы⚓︎

Доступные поля формы для использования в админке⚓︎

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

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

Специальные поля формы, доступные только в админке⚓︎

Поле Описание
Array используется для создания массивов ключ-значение
BackupHistory
Blueprint
Colorpicker показать палитру цветов
Columns используется для разбивки формы на несколько столбцов
Column используется для отображения одного столбца (используется с полем Columns)
Cron
CronStatus
Dateformat специальный выбор, который отображает текущую дату/время в переданных форматах
Datetime поле выбора даты и времени
Editor показать редактор Markdown
Elements условное и организационное поле для показа/скрытия потомков в зависимости от выбранного значения «триггера». Это чрезвычайно полезно для уменьшения беспорядка, когда есть много вариантов для отображения
Fieldset сгруппируйте набор полей внутри складного аккордеона
File в админке File специализирован для использования в конфигурациях плагинов и тем (чертежах). Обрабатывает загрузку файла в определенное место и его удаление, а также удаление его из конфигурации темы/плагина
Filepicker Filepicker позволяет выбирать файлы из расположения в файловой системе веб-сервера.
Frontmatter
IconPicker
List используется для создания коллекций полей
Markdown
MediaPicker
Multilevel
Order
PageMedia
PageMediaSelect показывает выбор со всеми носителями страницы. Используется в чертежах элементов страниц, чтобы позволить пользователю выбрать медиафайл, который будет назначен полю.
Pages показывает список страниц сайта
Parents
Permissions
Range
Section используется для разделения страницы настроек на разделы; каждый раздел поставляется с заголовком
Selectize гибрид текстового поля и поля выбора. В основном полезно для тегов и других полей подбора элементов.
SelectUnique
Taxonomy специальный выбор, предварительно настроенный для выбора одной или нескольких таксономий
ThemeSelect
UserInfo
Xss

Общие атрибуты полей⚓︎

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

Этот список обеспечивает общую основу, поэтому нет необходимости повторять описание общего поля.

Атрибут Описание
autocomplete принимает on или off
autofocus если включено, автофокус на этом поле
classes принимает строку с одним или несколькими классами CSS для добавления
default устанавливает значение поля по умолчанию. Это гарантирует, что вы всегда получите либо значение, указанное пользователем, либо значение по умолчанию. Смотрите также placeholder
disabled устанавливает отключенное состояние поля
help добавляет всплывающую подсказку к полю
id устанавливает идентификатор поля, а также атрибут for для метки
label устанавливает метку поля
name устанавливает имя поля
novalidate устанавливает состояние «novalidate»
placeholder устанавливает значение заполнителя поля. Это необходимо для установки значения, которое пользователь может видеть как подсказку для своего собственного значения, но не влияет на то, какое значение в конечном итоге будет записано. Смотрите также default.
readonly устанавливает состояние «только для чтения»
size устанавливает размер поля, которое, в свою очередь, добавляет класс в свой контейнер. Допустимые значения: large, x-small, medium, long, small. Конечно, вы можете добавить больше в шаблон, который вы видите, когда он используется во внешнем интерфейсе.
style устанавливает стиль поля. Если установлено на vertical, поле может отображаться во всю ширину. Это простой способ очистить форму.
title устанавливает значение заголовка поля
toggleable добавить флажок, который будет переключать активированный/отключенный атрибут поля
validate.required если установлено положительное значение, устанавливает поле как обязательное
validate.pattern устанавливает шаблон валидации
validate.message устанавливает сообщение, отображаемое в случае сбоя валидации
validate.type устанавливает тип поля, используемый во время валидации

Хотите знать больше?⚓︎

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

Валидация⚓︎

Большинство полей допускают валидацию.

validate:
+    required: true
+

приведет к тому, что поле будет помечено как обязательное.

validate:
+    message: 'Some message'
+

покажет определённое сообщение, когда поле не заполнено правильно.

validate:
+    pattern: 'Some pattern'
+

проверяет значение поля на соответствие переданному шаблону регулярного выражения. Примеры: pattern: "[1-9][0-9]*", pattern: '[A-Za-z0-9-]+', pattern: '[a-z0-9-]+', pattern: '^[a-z0-9_-]{3,16}$', pattern: '(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}'

validate.type⚓︎

validate.type указывает, по какому типу следует выполнять проверку.

Некоторые примеры:

Редактор приведет к textarea:

content:
+    type: editor
+    validate:
+      type: textarea
+

Selectize будет commalist:

taxonomies:
+    type: selectize
+    size: large
+    label: PLUGIN_ADMIN.TAXONOMY_TYPES
+    classes: fancy
+    help: PLUGIN_ADMIN.TAXONOMY_TYPES_HELP
+    validate:
+        type: commalist
+
+filters.category:
+  type: selectize
+  label: Category filter
+  help: Comma separated list of category names
+  validate:
+    type: commalist
+

Проверка адреса электронной почты:

author.email:
+    type: text
+    size: large
+    label: PLUGIN_ADMIN.DEFAULT_EMAIL
+    help: PLUGIN_ADMIN.DEFAULT_EMAIL_HELP
+    validate:
+        type: email
+

Убедитесь, что значение является логическим:

summary.enabled:
+    type: toggle
+    label: PLUGIN_ADMIN.ENABLED
+    highlight: 1
+    help: PLUGIN_ADMIN.ENABLED_HELP
+    options:
+        1: PLUGIN_ADMIN.YES
+        0: PLUGIN_ADMIN.NO
+    validate:
+        type: bool
+

Убедитесь, что значение является целым числом от 0 до 65536:

summary.size:
+    type: text
+    size: x-small
+    label: PLUGIN_ADMIN.SUMMARY_SIZE
+    help: PLUGIN_ADMIN.SUMMARY_SIZE_HELP
+    validate:
+        type: int
+        min: 0
+        max: 65536
+

Убедитесь, что значение является числом > 1:

pages.list.count:
+    type: text
+    size: x-small
+    label: PLUGIN_ADMIN.DEFAULT_PAGE_COUNT
+    help: PLUGIN_ADMIN.DEFAULT_PAGE_COUNT_HELP
+    validate:
+        type: number
+        min: 1
+

Проверить тип таксономии как массив:

header.taxonomy:
+  type: taxonomy
+  label: PLUGIN_ADMIN.TAXONOMY
+  multiple: true
+  validate:
+    type: array
+

Проверить текстовое поле как слаг:

folder:
+  type: text
+  label: PLUGIN_ADMIN.FOLDER_NAME
+  validate:
+    type: slug
+

Поле array⚓︎

Array

Тип поля array используется для создания простого списка объектов ключ-значение, или просто список значений, если вы используете опцию value_only.

Пример:

metadata:
+   type: array
+   label: PLUGIN_ADMIN.METADATA
+   help: PLUGIN_ADMIN.METADATA_HELP
+   placeholder_key: PLUGIN_ADMIN.METADATA_KEY
+   placeholder_value: PLUGIN_ADMIN.METADATA_VALUE
+   required: true
+
Атрибут Описание
placeholder_key
placeholder_value
value_only Не требуйте и не храните ключи массива, просто храните простой массив значений.
value_type Установите значение textarea для отображения текстовой области для ввода значений массива вместо обычного текстового поля.
Разрешены общие атрибуты
default
help
label
name
style
toggleable
validate.required
validate.type

Поле выбора цвета⚓︎

Colorpicker

Тип поля colorpicker используется для отображения поля выбора цвета

Пример:

color:
+   type: colorpicker
+   label: Choose a color
+   default: '#FFFFFF'
+
Разрешены общие атрибуты
autocomplete
autofocus
classes
default
disabled
help
id
label
name
placeholder
style
title
toggleable
validate.message
validate.required
validate.type

Поля columns/column (столбцы)⚓︎

Columns

Типы полей columns иcolumn используются для разделения содержащихся полей формы на столбцы.

Пример:

columns:
+  type: columns
+  fields:
+    column1:
+      type: column
+      fields:
+
+        # .... subfields
+
+    column2:
+      type: column
+      fields:
+
+        # .... other subfields
+
Атрибут Описание
fields Подполя столбца/столбцов

Поле формата даты⚓︎

DateFormat

Тип поля dateformat используется для выбора даты.

Пример:

pages.dateformat.short:
+    type: dateformat
+    size: medium
+    classes: fancy
+    label: PLUGIN_ADMIN.SHORT_DATE_FORMAT
+    help: PLUGIN_ADMIN.SHORT_DATE_FORMAT_HELP
+    default: "jS M Y"
+    options:
+        "F jS \\a\\t g:ia": Date1
+        "l jS \\of F g:i A": Date2
+        "D, d M Y G:i:s": Date3
+        "d-m-y G:i": Date4
+        "jS M Y": Date5
+
Атрибут Описание
options В поле доступны параметры пары ключ-значение
multiple логическое. Если положительный, поле принимает несколько значений.
selectize
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
label
name
novalidate
size
style
toggleable
validate.required
validate.type

Поле даты и времени⚓︎

DateTime

Тип поля datetime используется для хранения и представления поля даты и времени.

Пример:

header.date:
+  type: datetime
+  label: PLUGIN_ADMIN.DATE
+  toggleable: true
+  help: PLUGIN_ADMIN.DATE_HELP
+
Атрибут Описание
format Значение формата даты и времени, вы можете использовать любой из доступных форматов даты PHP.
validate.min Минимальное допустимое значение
validate.max Максимально допустимое значение
Разрешены общие атрибуты
default
help
label
name
size
style
toggleable
validate.required
validate.type

Поле редактора⚓︎

Поле редактора

Тип поля editor используется для представления редактора Codemirror.

Пример:

frontmatter:
+  classes: frontmatter
+  type: editor
+  label: PLUGIN_ADMIN.FRONTMATTER
+  autofocus: true
+  codemirror:
+    mode: 'yaml'
+    indentUnit: 4
+    autofocus: true
+    indentWithTabs: false
+    lineNumbers: true
+    styleActiveLine: true
+    gutters: ['CodeMirror-lint-markers']
+    lint: true
+
Атрибут Описание
codemirror Набор значений, которые необходимо установить в редакторе codemirror. По умолчанию использует режим: gfm (github flavored markdown)
resizer Если положительный, включает изменение размера. В противном случае редактор фиксирован
Разрешены общие атрибуты
default
help
label
name
style
validate.required
validate.type
autofocus
classes
disabled
id
novalidate
placeholder
readonly

Поле Elements⚓︎

Elements

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

Пример:

header.elements-demo.type:
+  type: elements
+  label: 'Elements Demo'
+  size: small
+  default: gelato
+  options:
+    gelato: Gelato Flavors
+    color: Color
+    planets: Planets
+  fields:
+    gelato:
+      type: element
+      fields:
+        .flavours:
+          type: array
+          default:
+            pistacchio: Pistacchio
+            vanilla: Vanilla
+            chocolate: Chocolate
+            stracciatella: Stracciatella
+    color:
+      type: element
+      fields:
+        .description:
+          type: textarea
+          rows: 10
+          default: Color (American English) or colour (Commonwealth English) is the visual perceptual property corresponding in humans to the categories called blue, green, red, etc. Color derives from the spectrum of light (distribution of light power versus wavelength) interacting in the eye with the spectral sensitivities of the light receptors. Color categories and physical specifications of color are also associated with objects or materials based on their physical properties such as light absorption, reflection, or emission spectra. By defining a color space colors can be identified numerically by their coordinates.
+    planets:
+      type: element
+      fields:
+        .favorites:
+          type: text
+          placeholder: What are your favorite planets?
+          markdown: true
+          description: 'Find a list of planets from [Wikipedia](https://en.wikipedia.org/wiki/Planet)'
+

Поле Fieldset⚓︎

Fieldset Field

Fieldset группирует набор полей внутри одного блока.

Пример:

header.fieldset:
+  type: fieldset
+  title: Your title
+  help: Help text
+  info: Info text
+  text: Text inside fieldset and before other fields
+  icon: comments       # Fork Awesome icons system (see : forkaweso.me).
+  collapsed: true      # Initial state of fieldset (see collapsible option)
+  collapsible: true    # Whether one can expand the fieldset or not
+  fields:
+    header.fieldset.an_example_text:
+      type: text
+      label: text
+    header.fieldset.an_example_textarea:
+      type: textarea
+      label: textarea
+

Наборы полей также должны быть сохранены в блоке метаданных, с header., чтобы их состояния подполей правильно запоминались!

Если поля в наборе полей используют toggleable:, их состояние не будет запомнено, если названный набор полей не имеет префикса header.. Вот пример действующей структуры с модификацией опции pagination:

header.fieldset:
+  type: fieldset
+  ... etc...
+  fields:
+    header.content.pagination:
+      type: toggle
+      toggleable: true
+      label: "Activate Pagination ?"
+      highlight: 1
+      default: 0
+      options:
+        1: Yes
+        0: No
+      validate:
+        type: bool
+

Значок набора полей⚓︎

Вы можете использовать значок для размещения в заголовке набора полей. Используемая система значков Fork Awesome.

Атрибут Описание
icon Иконка из коробки
collapsed Если true, список открывается свернутым. По умолчанию он расширен
collapsible Можно ли расширять набор полей или нет
Разрешены общие атрибуты
disabled
help
label
name
size
style
toggleable

Поле файла⚓︎

Поле файла

Тип поля file может использоваться в конфигурациях (чертежах) страниц, плагинов и тем. Обрабатывает загрузку файла в определенное место, а также удаление его из заголовков страниц или конфигурации темы/плагина.

Поле file предназначено для использования конфигурацией, темами и плагинами, но НЕ чертежами страниц. Для страниц вы должны использовать существующее поле pagemedia, а затем использовать поле filepicker для выбора файлов.

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

Пример:

custom_logo_login_screen:
+  type: file
+  label: Custom Logo Login Screen
+  destination: 'plugins://admin/assets'
+  accept:
+    - image/*
+
custom_file:
+  type: file
+  label: A Label
+  destination: 'theme://assets'
+  multiple: true
+  limit: 5
+  filesize: 1
+  accept:
+    - image/*
+
Атрибут Описание
destination Папка, в которой будут храниться файлы, с помощью потока или относительно корня Grav. Например: plugins://my-plugin/assets
multiple Разрешить или запретить использование более одного файла для каждого поля
limit Когда включен параметр multiple, можно ограничить количество файлов, разрешенных для загрузки.
filesize Максимально допустимый размер каждого файла в МБ
accept Добавьте список разрешенных типов MIME и расширений страниц. Например. ["image/*", '.mp3']
random_name Использует случайное имя файла для каждого загруженного файла
avoid_overwriting Добавляет отметку времени перед каждым именем файла, если возникнет конфликт
Разрешены общие атрибуты
default
disabled
help
label
name
size
style
toggleable
validate.required
validate.type

Поле Filepicker⚓︎

Поле Filepicker

Тип поля filepicker можно использовать в конфигурациях (чертежах) страниц, плагинов и тем. Обрабатывает выбор файла из местоположения и сохранение его в заголовках страниц или в конфигурации темы/плагина.

Пример:

picked_image:
+  type: filepicker
+  folder: 'theme://images/pages'
+  label: Select a file
+  preview_images: true
+  accept:
+    - .png
+    - .jpg
+
header.a_file:
+  type: filepicker
+  folder: 'self@'
+  preview_images: true
+  label: Select a file
+
Атрибут Описание
folder Папка, в которой будут выполняться поиск файлов, с помощью потока или относительно корня Grav. Принимает любое значение в формате места назначения поля файла.
accept Список допустимых расширений файлов
preview_images Если включено, файлы изображений будут иметь небольшой предварительный просмотр.
on_demand Если этот параметр включен, файлы и изображения будут загружаться только тогда, когда инструмент выбора файлов находится в фокусе. Это полезно для сокращения времени загрузки страницы редактирования администратора, когда есть большие медиафайлы или много полей для выбора файлов.
Разрешены общие атрибуты
default
disabled
help
label
name
size
style
toggleable
validate.required

Поле приманки⚓︎

Тип поля honeypot создает скрытое поле, которое при заполнении возвращается с ошибкой. Это полезный способ предотвратить заполнение и отправку формы ботами.

Пример:

fields:
+    - name: honeypot
+      type: honeypot
+

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

Поле приманки — популярная альтернатива полям капчи.

Поле списка⚓︎

Поле списка

Тип поля list используется для создания коллекций полей. Поле принимает атрибут fields, который будет содержать подполя, и будет кнопка Добавить элемент, позволяющая пользователю добавлять дополнительные элементы в коллекцию.

Пример:

header.buttons:
+  name: buttons
+  type: list
+  style: vertical
+  label: Buttons
+  fields:
+    .text:
+      type: text
+      label: Text
+    .url:
+      type: text
+      label: URL
+    .primary:
+      type: toggle
+      label: Primary
+      highlight: 1
+      default: 1
+      options:
+          1: 'Yes'
+          0: 'No'
+      validate:
+          type: bool
+

В этом примере будет сгенерирован этот интерфейс администратора:

При сохранении страницы мы увидим следующий YAML, добавленный через блок метаданных страницы:

buttons:
+    -
+        text: 'Some text'
+        url: 'https://getgrav.org'
+        primary: false
+    -
+        text: 'Another text'
+        url: 'https://another-url.com'
+        primary: true
+

Это будет использовано в Theme Twig для вывода списка в удобной форме.

Другой пример этого определения поля - это список функций, используемый модульной дочерней страницей Antimatter Features. У каждой функции есть значок, заголовок и текст:

header.features:
+  name: features
+  type: list
+  label: Features
+
+  fields:
+    .icon:
+      type: text
+      label: Icon
+    .header:
+      type: text
+      label: Header
+    .text:
+      type: text
+      label: Text
+

Доступ к данным поля list и их отображение выполняется с помощью простого цикла twig for, как в примере ниже:

{% for feature in page.header.features %}
+    {{ feature.icon }}
+    {{ feature.header }}
+    {{ feature.text }}
+{% endfor %}
+
Атрибут Описание
fields Подполя
collapsed Если true, список открывается свернутым. По умолчанию он расширен
style Может быть установлен на vertical для экономии места по горизонтали
btnLabel Текст метки «Добавить новый элемент»
sort Логический. Если отрицательный, отключает возможность сортировки элементов
controls Определяет, где будет размещена кнопка «Добавить элемент». Может быть установлен на [top|bottom|both], по умолчанию bottom.
placement Определяет, куда будет помещен добавленный элемент. Может быть установлен на [top|bottom|position], по умолчанию bottom. Если значение placementtop или bottom, обе кнопки добавляют элемент сверху или снизу соответственно. Если значение placementposition, элемент добавляется в зависимости от положения нажатой кнопки — при нажатии на верхнюю кнопку элемент будет добавлен сверху, а при нажатии на нижнюю — снизу.
min Минимальное количество элементов, разрешенных в списке.
max Максимальное количество элементов, разрешенных в списке. Кнопка «Добавить элемент» не будет работать при превышении этого значения
Разрешены общие атрибуты
default
help
label
name
validate.required
validate.type
size

Поле PageMediaSelect⚓︎

Тип поля pagemediaselect используется для того, чтобы позволить пользователям выбирать медиа из одного из медиа страниц, уже загруженных через FTP или с помощью менеджера медиа страниц.

Пример:

header.img_link:
+  label: Choose media
+  type: pagemediaselect
+
Атрибут Описание
multiple Выбрать несколько файлов
Разрешены общие атрибуты
default
help
label
name
style
toggleable
validate.required
validate.type
autofocus
classes
disabled
id
novalidate
size

Поле Pages⚓︎

Поле Pages

Тип поля pages показывает список страниц сайта.

Пример:

home.alias:
+    type: pages
+    size: medium
+    classes: fancy
+    label: PLUGIN_ADMIN.HOME_PAGE
+    start_route: '/some_page'
+    show_all: false
+    show_modular: false
+    show_root: false
+    help: PLUGIN_ADMIN.HOME_PAGE_HELP
+
Атрибут Описание
start_route Выбрать корневой маршрут для списка
show_fullpath Показывать путь к странице вместо заголовка
show_slug Показывать слаг
show_all Показать все страницы
show_modular Показать модульные страницы
show_root Показать корневые страницы
options Необязательный список дополнительных вариантов
multiple Выбрать несколько страниц
limit_levels Количество отображаемых уровней
selectize

Если вы установите для multiple значение true, вам нужно добавить validate.type: array. В противном случае массив выбранных страниц не будет сохранен правильно.

Разрешены общие атрибуты
default
help
label
name
style
toggleable
validate.required
validate.type
autofocus
classes
disabled
novalidate
size

Поле Section⚓︎

Тип поля Section используется для разделения страницы настроек на разделы.

Пример:

content:
+    type: section
+    title: PLUGIN_ADMIN.DEFAULTS
+    underline: true
+
+    fields:
+
+        #..... subfields
+
Атрибут Описание
title Заголовок
underline Добавить подчеркивание после заголовка
text Текст для отображения внизу
security Массив учетных данных, необходимых пользователю для визуализации этого раздела

Поле Selectize⚓︎

Selectize

Тип поля selectize используется для отображения гибрида текстового поля и поля выбора. В основном полезно для тегов и других полей выбора элементов.

Пример:

taxonomies:
+    type: selectize
+    selectize:
+        options:
+            - text: "test"
+              value: "real value 1"
+            - text: "test-2"
+              value: "real value 2"
+            - text: "test-3"
+              value: "real value 3"
+    size: large
+    label: PLUGIN_ADMIN.TAXONOMY_TYPES
+    classes: fancy
+    help: PLUGIN_ADMIN.TAXONOMY_TYPES_HELP
+    validate:
+        type: commalist
+
Разрешены общие атрибуты
default
help
label
name
style
toggleable
validate.required
validate.type
Общие атрибуты INPUT BLOCK
autocomplete
autofocus
classes
disabled
id
novalidate
placeholder
readonly
size
title
validate.pattern
validate.message

Поле Taxonomy⚓︎

Taxonomy

Тип поля taxonomy - это специальный выбор, предварительно настроенный для выбора одного или нескольких значений таксономии.

Пример:

header.taxonomy:
+  type: taxonomy
+  label: PLUGIN_ADMIN.TAXONOMY
+  multiple: true
+  validate:
+    type: array
+
Атрибут Описание
multiple Логический. Если положительный, поле принимает несколько значений.
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
size
style
validate.required
validate.pattern
validate.message
\ No newline at end of file diff --git a/forms/blueprints/fields-available/list_field_bp.gif b/forms/blueprints/fields-available/list_field_bp.gif new file mode 100644 index 00000000..c02472be Binary files /dev/null and b/forms/blueprints/fields-available/list_field_bp.gif differ diff --git a/forms/blueprints/fields-available/pages_field_bp.gif b/forms/blueprints/fields-available/pages_field_bp.gif new file mode 100644 index 00000000..99ab38df Binary files /dev/null and b/forms/blueprints/fields-available/pages_field_bp.gif differ diff --git a/forms/blueprints/fields-available/password_field.gif b/forms/blueprints/fields-available/password_field.gif new file mode 100644 index 00000000..967834e6 Binary files /dev/null and b/forms/blueprints/fields-available/password_field.gif differ diff --git a/forms/blueprints/fields-available/radio_field.gif b/forms/blueprints/fields-available/radio_field.gif new file mode 100644 index 00000000..a405d76e Binary files /dev/null and b/forms/blueprints/fields-available/radio_field.gif differ diff --git a/forms/blueprints/fields-available/range_field.gif b/forms/blueprints/fields-available/range_field.gif new file mode 100644 index 00000000..e1d40600 Binary files /dev/null and b/forms/blueprints/fields-available/range_field.gif differ diff --git a/forms/blueprints/fields-available/selectize_field_bp.gif b/forms/blueprints/fields-available/selectize_field_bp.gif new file mode 100644 index 00000000..10a906d4 Binary files /dev/null and b/forms/blueprints/fields-available/selectize_field_bp.gif differ diff --git a/forms/blueprints/fields-available/tabs_field_bp.gif b/forms/blueprints/fields-available/tabs_field_bp.gif new file mode 100644 index 00000000..42d6c586 Binary files /dev/null and b/forms/blueprints/fields-available/tabs_field_bp.gif differ diff --git a/forms/blueprints/fields-available/taxonomy_field_bp.gif b/forms/blueprints/fields-available/taxonomy_field_bp.gif new file mode 100644 index 00000000..9a0cc329 Binary files /dev/null and b/forms/blueprints/fields-available/taxonomy_field_bp.gif differ diff --git a/forms/blueprints/fields-available/text_field.gif b/forms/blueprints/fields-available/text_field.gif new file mode 100644 index 00000000..580a8996 Binary files /dev/null and b/forms/blueprints/fields-available/text_field.gif differ diff --git a/forms/blueprints/fields-available/toggle_field_bp.gif b/forms/blueprints/fields-available/toggle_field_bp.gif new file mode 100644 index 00000000..3c184f62 Binary files /dev/null and b/forms/blueprints/fields-available/toggle_field_bp.gif differ diff --git a/forms/blueprints/how-to-add-file-upload/index.html b/forms/blueprints/how-to-add-file-upload/index.html new file mode 100644 index 00000000..b9eebba8 --- /dev/null +++ b/forms/blueprints/how-to-add-file-upload/index.html @@ -0,0 +1,61 @@ + Как добавить поле для загрузки файлов - Документация Grav CMS на русском

Как добавить поле для загрузки файлов⚓︎

Загрузка файлов⚓︎

Вы можете добавить функцию загрузки файлов в чертежи страниц, конфигураций, плагинов и тем. Загрузка файлов всегда основана на Ajax и позволяет перетаскивать их с рабочего стола или выбирать их как обычные поля файла. Каждый раз, когда файл добавляется в поле, он автоматически загружается во временную папку и будет сохранен только при выполнении действия «Сохранить» (или «Отправить»).

Пример использования:

custom_file:
+  name: myfile
+  type: file
+  label: A Label
+  destination: 'plugins://my-plugin/assets'
+  multiple: true
+  autofocus: false
+  accept:
+    - image/*
+

Чтобы добавить загрузку файла, вы должны иметь нижнюю команду рендеринга javascript в вашем базовом шаблоне Twig: {{ assets.js('bottom') }}

Параметры⚓︎

Поле файла имеет несколько доступных опций, от принятого типа или расширения MIME до разрешенного размера файла:

Значения по умолчанию⚓︎

custom_file:
+  type: file
+  label: A Label
+  multiple: false
+  destination: 'self@'
+  random_name: false
+  avoid_overwriting: false
+  limit: 10
+  accept:
+    - image/*
+

multiple⚓︎

multiple: false # [false | true]
+

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

destination⚓︎

destination: 'self@' # [<path> | <stream> | self@ | page@:<path>]
+

Место назначения — это место, где должны храниться загруженные файлы. Это может быть обычный path (относительно корня Grav), stream (такой, как theme://images), self@, или специальный префикс page@:.

self@ не допускается за пределами области страниц или объектов Flex, будет выдана ошибка. Если вы используете поле файла вне страницы или объекта Flex, вы всегда должны изменять настройку destination.

Примеры⚓︎

  1. Если нужно загрузить файлы в папку плагина testing (user/plugins/testing), местом назначения будет:
    destination: 'plugins://testing'
    +
  2. Предполагая, что у нас есть элемент блога на маршруте /blog/ajax-upload (физическое местоположение — user/pages/02.blog/ajax-upload), с префиксом page@: адресатом будет:
    destination: 'page@:/blog/ajax-upload'
    +
  3. Предположим, что текущая тема — это antimatter, и мы хотим загрузить в папку с ресурсами (физическое местоположение — user/themes/antimatter/assets), с потоком theme место назначения будет:
    destination: 'theme://assets'
    +

random_name⚓︎

random_name: false # [false | true]
+

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

Пример⚓︎

'my_file.jpg' => 'y5bqsGmE1plNTF2.jpg'
+

avoid_overwriting⚓︎

avoid_overwriting: false # [false | true]
+

Когда включен параметр prevent_overwriting и файл с таким же именем, как и загруженный, уже существует в destination, он будет переименован. Перед вновь загруженным файлом будет стоять префикс текущей даты и времени, соединенный тире.

Пример⚓︎

'my_file.jpg' => '20160901130509-my_file.jpg'
+

limit⚓︎

limit: 10 # [1...X | 0 (unlimited)]
+

Когда включен параметр multiple, limit позволяет ограничить количество разрешенных файлов для отдельного поля. Если multiple не включен (не включен по умолчанию), limit автоматически возвращается к 1.

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

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

accept⚓︎

accept:
+  - 'image/*' # Array of MIME types and/or extensions. ['*'] for allowing any file.
+

Параметр accept позволяет использовать массив типа MIME, а также определения расширений. Все расширения должны начинаться с . (точки) плюс само расширение.

Кроме того, вы также можете разрешить любой файл, просто используя обозначение * (звездочка) accept: ['*'].

Примеры⚓︎

  1. Чтобы разрешить только файлы yaml иjson:
        accept:
    +    - .yaml
    +    - .json
    +
  2. Чтобы разрешить только изображения и видео:
        accept:
    +    - 'image/*'
    +    - 'video/*'
    +
  3. Чтобы разрешить любое изображение, любое видео и только файлы mp3:
        accept:
    +    - 'image/*'
    +    - 'video/*'
    +    - .mp3
    +
  4. Чтобы разрешить любой файл:
        accept:
    +    - '*'
    +

filesize⚓︎

Максимальный размер файла ограничен:

  1. полем filesize:...
  2. Настройкой files: filesize: плагина формы user/plugins/form.yaml...
  3. Конфигурацией PHP для параметра upload_max_filesize для отдельных загружаемых файлов и post_max_size для максимального общего размера сообщения формы.

Примеры⚓︎

  1. Чтобы ограничить конкретное поле до 5M
    custom_file:
    +    name: myfile
    +    type: file
    +    label: A Label
    +    destination: 'plugins://my-plugin/assets'
    +    filesize: 5
    +    accept:
    +    - image/*
    +
  2. Чтобы ограничить все поля файла значением 5M, отредактируйте файл user/config/form.yaml:
    files:
    +    multiple: false
    +    limit: 10
    +    destination: 'self@'
    +    avoid_overwriting: false
    +    random_name: false
    +    filesize: 5
    +    accept:
    +    - 'image/*
    +
\ No newline at end of file diff --git a/forms/blueprints/index.html b/forms/blueprints/index.html new file mode 100644 index 00000000..17f6bc63 --- /dev/null +++ b/forms/blueprints/index.html @@ -0,0 +1,28 @@ + Обзор - Документация Grav CMS на русском

Чертежи⚓︎

Что такое чертеж?⚓︎

Чертежи — важный аспект Grav. По сути, они являются основой взаимодействия темы или плагина с администратором Grav. Они сообщают Grav, что такое тема или плагин, его название, где его можно найти на GitHub и т. д. Он также генерирует параметры конфигурации для этой темы или плагина в админке Grav.

Blueprint определяется в файле YAML и обычно может содержать свойства, а также определения форм.

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

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

Типы чертежей⚓︎

Grav использует чертежи для:

  • определять темы и информацию о плагинах.
  • определить параметры конфигурации темы/плагина, которые будут отображаться в админке.
  • определить формы страниц в админке.
  • определите параметры, показанные в разделе «Конфигурация админки».
  • определите flex-каталоги/объекты.

На этом этапе мы разберем дополнительные сведения о том, как чертежи работают в Grav.

Темы и плагины⚓︎

При использовании с темами и плагинами принято помещать в пакет blueprints.yaml. Это сообщает Grav метаданные этого ресурса, которые затем представляют его администратору Grav.

Файл blueprints.yaml — важная часть любой темы и плагина. Это необходимо для системы GPM (Grav Package Manager). GPM использует информацию, хранящуюся в чертеже, чтобы сделать плагин доступным для пользователей.

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

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

Формы

Файл blueprints.yaml работает с именем файла YAML плагина (пример: assets.yaml). Чертёж устанавливает настраиваемые параметры, а одноименный файл YAML ресурса устанавливает их значения. Именно этот именованный файл YAML затем дублируется в раздел user/config экземпляра Grav, чтобы отменить эти значения по умолчанию вручную или через администратора Grav.

По сути, когда дело доходит до любого параметра конфигурации для темы или плагина, файл blueprints.yaml определяет его, а именованный файл YAML для этого ресурса сообщает вам, на что он установлен.

Страницы⚓︎

Grav Pages действительно может быть чем угодно. Страница может быть списком блога, сообщением в блоге, страницей продукта, галереей изображений и т. д.

Что определяет, что страница должна делать и как она должна выглядеть — это чертеж страницы.

Grav предоставляет несколько базовых чертежей страниц: стандартные и модульные. Это два основных строительных блока Grav.

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

Тема Grav гораздо более гибкая и мощная, чем та, к которой вы привыкли на других платформах.

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

  • создание сайта документации, подобного тому, который вы сейчас читаете.
  • создание сайта электронной коммерции.
  • создать блог.
  • создать сайт-портфолио.

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

Файл подкачки используется страницей путем установки имени файла разметки, например blog.md, default.md или form.md.

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

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

Как это сделать: в своей теме добавьте папку blueprints/ и добавьте файл YAML с именем добавленного вами шаблона страницы. Например, если вы добавляете шаблон страницы blog, добавьте файл blueprints/blog.yaml. Вы можете найти пример этого каталога в теме Antimatter.

Компоненты чертежей⚓︎

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

Вот пример части метаданных файла ** blueprints.yaml **:

name: GitHub
+slug: github
+type: plugin
+version: 1.0.1
+description: "This plugin wraps the [GitHub v3 API](https://developer.github.com/v3/) and uses the [php-github-api](https://github.com/KnpLabs/php-github-api/) library to add a nice GitHub touch to your Grav pages."
+icon: github
+author:
+  name: Team Grav
+  email: devs@getgrav.org
+  url: https://getgrav.org
+homepage: https://github.com/getgrav/grav-plugin-github
+keywords: github, plugin, api
+bugs: https://github.com/getgrav/grav-plugin-github/issues
+license: MIT
+

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

Формы

Следующий раздел — это область форм, которая находится всего на пару пробелов под данными, перечисленными выше. Эта область чертежа генерирует формы и поля, используемые для настройки плагина из Grav Admin. Вот краткий пример этой области файла blueprints.yaml.

form:
+  validation: strict
+  fields:
+    enabled:
+        type: toggle
+        label: Plugin status
+        highlight: 1
+        default: 1
+        options:
+            1: Enabled
+            0: Disabled
+        validate:
+            type: bool
+

В этой области файла создаются все административные параметры, доступные в админке. В данном конкретном случае мы создали простой переключатель Plugin Status, который позволяет пользователю включать или отключать плагин в админке (на фото ниже).

Формы

Отладка чертежей⚓︎

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

Можно использовать CLI-команду bin/grav yamllinter для получения отчёта об ошибках в yaml-файлах. Это может оказать неоценимую помощь при модификации yaml-файлов.

\ No newline at end of file diff --git a/forms/forms/example-form/index.html b/forms/forms/example-form/index.html new file mode 100644 index 00000000..778f6295 --- /dev/null +++ b/forms/forms/example-form/index.html @@ -0,0 +1,68 @@ + Контактная форма - Документация Grav CMS на русском

Пример: контактная форма⚓︎

Простая контактная форма⚓︎

Плагин Grav Form — это самый простой способ использовать формы на вашем сайте. Давайте посмотрим, как мы можем создать простую контактную форму.

Живой пример⚓︎

У каркаса Sora Article есть страница с формой, которую можно просмотреть во время чтения этого руководства:

Живая страница

Файл markdown

Настройка страницы⚓︎

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

Шаблон вашей страницы или родительский шаблон страницы должен содержать тег {% block content %}, чтобы плагин Grav Form отображал ваши данные на странице.

Поля формы и инструкции по обработке определены во внешнем интерфейсе YAML страницы, поэтому просто откройте файл разметки страницы в своем любимом редакторе и поместите в него следующий код:

---
+title: Contact Form
+
+form:
+    name: contact
+
+    fields:
+        name:
+          label: Name
+          placeholder: Enter your name
+          autocomplete: on
+          type: text
+          validate:
+            required: true
+
+        email:
+          label: Email
+          placeholder: Enter your email address
+          type: email
+          validate:
+            required: true
+
+        message:
+          label: Message
+          placeholder: Enter your message
+          type: textarea
+          validate:
+            required: true
+
+        g-recaptcha-response:
+          label: Captcha
+          type: captcha
+          recaptcha_not_validated: 'Captcha not valid!'
+
+    buttons:
+        submit:
+          type: submit
+          value: Submit
+        reset:
+          type: reset
+          value: Reset
+
+    process:
+        captcha: true
+        save:
+            fileprefix: contact-
+            dateformat: Ymd-His-u
+            extension: txt
+            body: "{% include 'forms/data.txt.twig' %}"
+        email:
+            subject: "[Site Contact Form] {{ form.value.name|e }}"
+            body: "{% include 'forms/data.html.twig' %}"
+        message: Thank you for getting in touch!
+        display: thankyou
+---
+
+# Contact form
+
+Some sample page content
+

Убедитесь, что вы настроили адреса электронной почты в плагине Email.

В этом примере используется Google reCAPTCHA через поле Captcha, и вы должны настроить ваши site_key и secret_key в плагине Form, чтобы это работало. Если вы не хотите использовать Google reCaptcha, просто удалите поле g-recaptcha-response и строчку captcha: true из секции process.

Теперь внутри папки contacts создайте подпапку с именем thankyou/, а в ней — новый файл с именем formdata.md. И вставьте следующий код:

---
+title: Email sent
+cache_enable: false
+process:
+    twig: true
+---
+
+## Email sent!
+

Вот и всё!

Формы на модульных страницах работают по-разному. Чтобы узнать об этом больше, рекомендуем прочитать использование форм на модульных страницах

Когда пользователи отправят форму, плагин отправит вам электронное письмо (как установлено в настройках form плагина Email) и сохранит введенные данные в папке data/.

Для получения полной информации о настройке электронной почты, пожалуйста, прочтите документацию по плагину Email

Вы можете активировать плагин Grav Data Manager, чтобы увидеть эти данные в плагине админки.

В будущем мы хотим, чтобы Grav могла динамически генерировать формы из плагина админки.

\ No newline at end of file diff --git a/forms/forms/fields-available/basic-captcha_field.gif b/forms/forms/fields-available/basic-captcha_field.gif new file mode 100644 index 00000000..28c40585 Binary files /dev/null and b/forms/forms/fields-available/basic-captcha_field.gif differ diff --git a/forms/forms/fields-available/checkbox_field.gif b/forms/forms/fields-available/checkbox_field.gif new file mode 100644 index 00000000..06494fb0 Binary files /dev/null and b/forms/forms/fields-available/checkbox_field.gif differ diff --git a/forms/forms/fields-available/checkboxes_field.gif b/forms/forms/fields-available/checkboxes_field.gif new file mode 100644 index 00000000..0c25f006 Binary files /dev/null and b/forms/forms/fields-available/checkboxes_field.gif differ diff --git a/forms/forms/fields-available/date_field.gif b/forms/forms/fields-available/date_field.gif new file mode 100644 index 00000000..d76b000c Binary files /dev/null and b/forms/forms/fields-available/date_field.gif differ diff --git a/forms/forms/fields-available/datetime_field.gif b/forms/forms/fields-available/datetime_field.gif new file mode 100644 index 00000000..96c4b3f8 Binary files /dev/null and b/forms/forms/fields-available/datetime_field.gif differ diff --git a/forms/forms/fields-available/display_field.jpg b/forms/forms/fields-available/display_field.jpg new file mode 100644 index 00000000..f3cb925b Binary files /dev/null and b/forms/forms/fields-available/display_field.jpg differ diff --git a/forms/forms/fields-available/email_field.gif b/forms/forms/fields-available/email_field.gif new file mode 100644 index 00000000..8435e15b Binary files /dev/null and b/forms/forms/fields-available/email_field.gif differ diff --git a/forms/forms/fields-available/index.html b/forms/forms/fields-available/index.html new file mode 100644 index 00000000..b429dd25 --- /dev/null +++ b/forms/forms/fields-available/index.html @@ -0,0 +1,279 @@ + Индекс поля формы - Документация Grav CMS на русском

Ссылка: указатель полей формы⚓︎

Общие атрибуты полей⚓︎

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

Этот список обеспечивает общую основу, поэтому нет необходимости повторять описание общего поля.

Атрибут Описание
autocomplete принимает on или off
autofocus если включено, автофокус на этом поле
classes принимает строку с одним или несколькими классами CSS для добавления
default устанавливает значение поля по умолчанию
disabled устанавливает отключенное состояние поля
help добавляет всплывающую подсказку к полю
id устанавливает идентификатор поля. Также устанавливает атрибут for для тега label
label устанавливает метку поля
display_label принимает true или false
labelclasses принимает строку с одним или несколькими классами CSS для добавления
sublabel устанавливает текст поля под меткой
sublabelclasses принимает строку с одним или несколькими классами CSS для добавления
name устанавливает имя поля
novalidate устанавливает состояние novalidate поля
outerclasses классы, добавленные в div, включающий тег label и поле
wrapper_classes Классы, добавленные в оболочку, которая включает описание и поле
placeholder устанавливает значение заполнителя поля
readonly устанавливает состояние поля только для чтения
size устанавливает размер поля, которое, в свою очередь, добавляет класс в свой контейнер. Допустимые значения: large, x-small, medium, long, small. Вы, конечно, можете добавить больше в шаблон, который вы видите, когда он используется во фронтенде
style устанавливает стиль поля
title устанавливает значение заголовка поля
type устанавливает тип поля
validate.required если установлено положительное значение, устанавливает поле как обязательное
validate.pattern устанавливает шаблон валидации
validate.message устанавливает сообщение, отображаемое в случае сбоя валидации

Чтобы добавить пользовательские атрибуты, вы можете использовать:

attributes:
+  key: value
+

Чтобы добавить пользовательские значения data-*, вы можете использовать:

datasets:
+  key: value
+

Указанные выше определения атрибутов и наборов данных приводят к следующему определению поля:

<input name="data[name]" value="" type="text" class="form-input " key="value" data-key="value">
+

Положительные значения можно установить несколькими способами: 'on', true, 1. Остальные значения интерпретируются как отрицательные..


Доступные поля⚓︎

Поле Basic-Captcha⚓︎

Добавлено в Forms 7.0.0 в качестве локальной альтернативы полю Google ReCaptcha. Это поле особенно удобно при работе со СПАМом в контактных формах, когда вы не хотите иметь дело с хлопотами или, возможно, ограничениями GPDR, которые приходят с предложением Google. В нем используются OCR-устойчивые шрифты для предотвращения атак, и его можно настроить с помощью кодов для копирования или простых математических вопросов.

Basic-Captcha

тип поля basic-captcha полностью настраивается через конфигурацию forms, но поставляется с разумными значениями по умолчанию. Общая конфигурация Basic-Captcha задается в вашем глобальном файле конфигурации формы (обычно user/config/plugins/form.yaml). По умолчанию установлены следующие параметры:

basic_captcha:
+  type: characters # options: [characters | math]
+  chars:
+    length: 6 # number of chars to output
+    font: zxx-noise.ttf # options: [zxx-noise.ttf | zxx-camo.ttf | zxx-xed.ttf | zxx-sans.ttf]
+    bg: '#cccccc' # 6-char hex color
+    text: '#333333' # 6-char hex color
+    size: 24 # font size in px
+    start_x: 5 # start position in x direction in px
+    start_y: 30 # start position in y direction in px
+    box_width: 135 # box width in px
+    box_height: 40 # box height in px
+  math:
+    min: 1 # smallest digit
+    max: 12 # largest digit
+    operators: ['+', '-', '*'] # operators that can be used in math
+

Пример:

basic-captcha:
+  type: basic-captcha
+  placeholder: скопируйте 6 символов
+  label: Вы человек?
+

Для этого также требуется соответствующий элемент process:, чтобы обеспечить правильную проверку формы.

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

Пример:

process:
+  basic-captcha:
+    message: Проверка на человечность не прошла, попробуйте ещё раз...
+

Поле Turnstile Captcha (Cloudflare)⚓︎

Начиная с версии Form v7.1.0, Grav добавляет поддержку нового поля Cloudflare Turnstile. Это поле — новый способ предотвращения СПАМа в формах, и это отличная альтернатива полю Google ReCaptcha и ограничениям GPDR, предлагаемым Google. Это поле особенно удобно при работе со СПАМом в контактных формах. Подробнее о Turnstile.

Преимущества по сравнению с Google ReCaptcha⚓︎

  1. Соответствие требованиям GDPR и ориентация на защиту частной жизни пользователей
  2. Чрезвычайно быстрая проверка вызовов
  3. Очень простая реализация как в Cloudflare, так и в Grav, никаких сложных пользовательских интерфейсов или параметров для настройки.
  4. Никаких причудливых обходных путей для асинхронной отправки форм (ajax), это просто работает!
  5. Исключительный пользовательский опыт по сравнению с ReCaptcha, больше никаких подсчётов машин, светофоров и прочей ерунды
  6. Построен на основе машинного обучения, со временем становится лучше и адаптируется к новым векторам атак.
  7. Исчерпывающая аналитика эффективности задачи, см. скриншот

Интеграция⚓︎

Прежде чем интегрировать Grav Forms с Turnstile, вы должны сначала создать новый сайт Turnstile, к примеру, с помощью официальной инструкции "get started". Здесь вы также можете выбрать тип виджета, который вы хотите использовать, это может быть управляемый, неинтерактивный или невидимый. Важно отметить, что тип виджета можно изменить только в Cloudflare, вы не сможете настроить его через Grav. Однако, если вас не устраивает один из вариантов, вы сможете изменить его позже, если возникнет необходимость. Подробнее о различных типах виджетов.

Убедитесь, что вы добавили все домены, на которых вам может понадобиться использовать поле Turnstile Captcha, включая вашу локальную среду.

После создания сайта вам будут предоставлены site_key и site_secret, которые нужно будет задать в файле конфигурации формы (обычно user/config/plugins/form.yaml). Вы можете игнорировать предложенный тег сценария, так как Grav позаботится об этом за вас.

По умолчанию установлены следующие параметры:

turnstile:
+  theme: light
+  site_key: <Your Turnstile Site Key>
+  secret_key: <Your Turnstile Secret Key>
+

Наконец, вам также потребуется соответствующий элемент process: для обеспечения правильной проверки формы.

Это должна быть первая запись в разделе process: формы, чтобы гарантировать, что форма не будет обработана, если проверка captcha не прошла.

Пример⚓︎

Типичный пример контактной формы выглядит следующим образом.

form:
+  name: contact
+  fields:
+    name:
+      label: Name
+      type: text
+      validate:
+        required: true
+    email:
+      label: Email
+      type: email
+      validate:
+        required: true
+    message:
+      label: Message
+      type: textarea
+      validate:
+        required: true
+    captcha:
+      type: turnstile
+      theme: light
+  buttons:
+    submit:
+      type: submit
+      value: Submit
+  process:
+    turnstile: true
+    email:
+      subject: '[Acme] {{ form.value.name|e }}'
+      reply_to: '{{ form.value.name|e }} <{{ form.value.email }}>'
+    message: Thanks for contacting us!
+    reset: true
+    display: '/'
+

Поле Google Captcha (ReCaptcha)⚓︎

Тип поля captcha используется для добавления элемента Google reCAPTCHA в вашу форму. В отличие от других элементов, его можно использовать в форме только один раз.

Вы должны настроить конфигурации Google reCAPTCHA в консоли администратора reCAPTCHA

Начиная с версии 3.0, поле поддерживает 3 варианта reCAPTCHA. Общая конфигурация reCAPTCHA лучше всего задается в глобальном файле конфигурации формы (обычно user/config/plugins/form.yaml). По умолчанию установлены следующие параметры:

recaptcha:
+  version: 2-checkbox
+  theme: light
+  site_key:
+  secret_key:
+

Эти параметры должны быть установлены на основе следующего:

Ключ Значения
version По умолчанию 2-checkbox, но также может быть 2-invisible или 3
theme По умолчанию light, но также может быть dark (в настоящее время работает только для версии 2-x)
site_key Ваш ключ сайта Google
secret_key Ваш секретный ключ Google

Убедитесь, что домен сайта указан в конфигурации Google reCAPTCHA.

В определении формы атрибут name поля captcha должен быть g-recaptcha-response'. Причина в том, что Google reCAPTCHA хранит код подтверждения Captcha в поле с именемg-recaptcha-response`.

Пример:

g-recaptcha-response:
+  type: captcha
+  label: Captcha
+

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

g-recaptcha-response:
+  type: captcha
+  label: Captcha
+  recaptcha_site_key: ENTER_YOUR_CAPTCHA_PUBLIC_KEY
+  recaptcha_not_validated: 'Каптча не действительна!'
+
Атрибут Описание
recaptcha_site_key Ключ сайта Google reCAPTCHA (необязательно)
recaptcha_not_validated Сообщение, показывающее, что капча недействительна
Разрешены общие атрибуты
help
label
name
outerclasses
validate.required

Для этого также требуется соответствующий элемент process:, чтобы обеспечить правильную проверку формы.

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

Пример:

process:
+  captcha: true
+
Проверка Captcha на стороне сервера⚓︎

Приведенный выше код проверит Captcha во внешнем интерфейсе и предотвратит отправку формы, если она неверна. Чтобы также проверить правильность ввода капчи на стороне сервера, добавьте действие процесса ввода капчи в свои формы:

process:
+  captcha: true
+

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

process:
+  captcha:
+    recaptcha_secret: ENTER_YOUR_CAPTCHA_SECRET_KEY
+    message: 'Successfully passed reCAPTCHA!'
+

См. пример контактной формы, чтобы увидеть его в действии.


Поле флажка⚓︎

Поле флажка

Тип поля checkbox используется для добавления одного флажка в вашу форму.

Пример:

agree_to_terms:
+  type: checkbox
+  label: 'Согласитесь с положениями и условиями'
+  validate:
+    required: true
+
Разрешены общие атрибуты
autofocus
classes
default
disabled
id
label
name
novalidate
outerclasses
size
style
validate.required
validate.pattern
validate.message

Поле флажков⚓︎

Поле флажков

Тип поля checkboxes используется для добавления группы флажков в вашу форму.

Примеры:

pages.process:
+  type: checkboxes
+  label: PLUGIN_ADMIN.PROCESS
+  help: PLUGIN_ADMIN.PROCESS_HELP
+  default:
+    markdown: true
+    twig: true
+  options:
+    markdown: Markdown
+    twig: Twig
+  use: keys
+
my_field:
+  type: checkboxes
+  label: Несколько флажков
+  default:
+    - option1
+    - option2
+  options:
+    option1: Вариант 1
+    option2: Вариант 2
+
Атрибут Описание
use Если установлено значение keys, флажок будет сохранять значение ключа элемента при отправке формы. В противном случае он будет использовать значение элемента.
options Массив разрешенных параметров «ключ-значение».
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
outerclasses
size
style
validate.required
validate.pattern
validate.message

Поле флажков не поддерживает действие процесса remember.


Условное поле⚓︎

Тип поля conditional используется для отображения некоторых других полей в зависимости от заданного условия.

Примеры:

Если ваше условное выражение уже возвращает true или false, вы можете просто использовать этот упрощенный формат:

my_conditional:
+  type: conditional
+  condition: config.plugins.yourplugin.enabled
+  fields: # The field(s) below will be displayed only if the plugin named yourplugin is enabled
+    header.mytextfield:
+      type: text
+      label: Текстовое поле
+

Однако, если вам требуются более сложные условия, вы можете выполнить некоторую логику, которая возвращает true или false в виде строк, и поле это тоже поймет.

my_conditional:
+  type: conditional
+  condition: "config.site.something == 'custom'"
+  fields: # The field(s) below will be displayed only if the `site` configuration option `something` equals `custom`
+    header.mytextfield:
+      type: text
+      label: Текстовое поле
+
Атрибут Описание
condition Состояние оценивается twig. Любая переменная, доступная с помощью twig, может быть оценена
Разрешены общие атрибуты
disabled
id
label
name

Поле даты⚓︎

Поле даты

Тип поля date используется для добавления поля ввода HTML5 date.

Пример:

- type: date
+  label: Enter a date
+  validate.min: '2014-01-01'
+  validate.max: '2018-12-31'
+
Атрибут Описание
validate.min Устанавливает атрибут min поля (см. Дополнительные атрибуты)
validate.max Устанавливает атрибут max поля (см. Дополнительные атрибуты)
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
readonly
size
style
title
validate.required
validate.pattern
validate.message

Поле отображения⚓︎

Поле отображения

Тип поля display используется для отображения текста или инструкций внутри формы. Может принимать Markdown-контент.

Пример:

test:
+  type: display
+  size: large
+  label: Instructions
+  markdown: true
+  content: "This is a test of **bold** and _italic_ in a text/display field\n\nanother paragraph...."
+
Атрибут Описание
markdown логическое значение, которое включает обработку Markdown в поле содержимого
content текстовое содержимое для отображения
Разрешены общие атрибуты
help
id
label
name
id
outerclasses
size
style

Поле электронной почты⚓︎

Поле электронной почты

Тип поля email используется для представления текстового поля ввода, которое принимает электронную почту, используя элемент input типа email.

В электронных письмах не учитывается регистр символов. Убедитесь, что логика вашего приложения правильно обрабатывает электронные письма в верхнем, нижнем или смешанном регистре.

Пример:

header.email:
+  type: email
+  autofocus: true
+  label: Email
+
Атрибут Описание
minlength минимальная длина текста
maxlength максимальная длина текста
validate.min то же, что и минимальная длина
validate.max то же, что и максимальная длина
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
readonly
size
style
title
validate.required
validate.pattern
validate.message

Поле файла⚓︎

С типом поля file вы можете позволить пользователям загружать файлы через форму. Поле по умолчанию позволяет только один файл типа изображение и будет загружено на текущую страницу, где была объявлена ​​форма.

# Default settings
+my_files:
+  type: file
+  multiple: false
+  destination: 'self@'
+  accept:
+    - image/*
+
Атрибут Описание
multiple Может быть true или false, если установлено значение true, можно выбрать несколько файлов одновременно time
destination Может быть @self, @page:/route, local/rel/path/, или поток PHP.
Если установлено @self, файлы будут загружены туда, где была объявлена ​​форма (current .md).
При использовании @page:/route файлы будут загружаться по указанному маршруту страницы, если существует (например, @page:/blog/a-blog-post).
Если установлено 'local/rel/path', файлы будут загружены в указанное местоположение. Например, user/images/uploads. Если путь не существует, он будет создан, поэтому убедитесь, что он доступен для записи.
Вы также можете установить в качестве значения любой допустимый поток PHP, распознаваемый Grav, например user-data://my-form или theme://media/uploads.
accept Принимает массив разрешенных типов MIME. Например, чтобы разрешить только файлы gif и mp4: accept: ['image/gif', 'video/mp4']

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

Разрешены общие атрибуты
help
label
name
outerclasses

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


Скрытое поле⚓︎

Тип поля hidden используется для добавления скрытого элемента в форму.

Example:

header.some_field:
+  type: hidden
+  default: my-value
+
Атрибут Описание
name Имя поля. Если отсутствует, имя поля берется из элемента определения поля (в приведенном выше примере: header.some_field)
Разрешены общие атрибуты
default

Поле приманки⚓︎

Тип поля honeypot создает скрытое поле, которое при заполнении возвращается с ошибкой. Это полезный способ предотвратить заполнение и отправку формы ботами.

Пример:

fields:
+  honeypot:
+    type: honeypot
+

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

Поле приманки - популярная альтернатива полям капчи.


Поле игнорирования⚓︎

Тип поля ignore можно использовать для удаления неиспользуемых полей при расширении из другого чертежа

Пример:

header.process:
+  type: ignore
+content:
+  type: ignore
+

Числовое поле⚓︎

Тип поля number используется для представления поля ввода текста, которое принимает только числа, с использованием поля HTML5 number.

Пример:

header.count:
+  type: number
+  label: 'Сколько?'
+  validate:
+    min: 10
+    max: 360
+    step: 10
+
Атрибут Описание
validate.min минимальное значение
validate.max максимальное значение
validate.step который увеличивает шаг вперед
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
readonly
size
style
title
validate.required
validate.pattern
validate.message

Поле пароля⚓︎

Тип поля password используется для представления поля ввода текста пароля.

Пример:

password:
+  type: password
+  label: Пароль
+
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
readonly
size
style
title
validate.required
validate.pattern
validate.message

Поле Radio⚓︎

Поле Radio

Тип поля radio используется для представления набора радиополей.

Пример:

my_choice:
+  type: radio
+  label: Выбор
+  default: markdown
+  options:
+    markdown: Markdown
+    twig: Twig
+
Атрибут Описание
options Массив разрешенных параметров «ключ-значение».
Разрешены общие атрибуты
default
disabled
help
id
label
name
outerclasses
validate.required
validate.pattern
validate.message

Поле диапазона⚓︎

Поле диапазона

Поле range используется для представления поля диапазона.

Пример:

header.choose_a_number_in_range:
+  type: range
+  label: Выберите число
+  validate:
+    min: 1
+    max: 10
+
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
readonly
size
style
title
validate.required
validate.pattern
validate.message

Поле Section⚓︎

Тип поля Section используется для разделения страницы настроек на разделы.

Пример:

content:
+  type: section
+  title: PLUGIN_ADMIN.DEFAULTS
+  underline: true
+
+  fields:
+
+    #..... subfields
+
Атрибут Описание
title Заголовок
text Текст для отображения внизу
security Массив учётных данных, необходимых пользователю для визуализации этого раздела
title_level Установить собственный тег заголовка. По умолчанию: h3

Поле выбора⚓︎

Поле выбора

Тип поля select используется для представления поля выбора.

Пример 1:

pages.order.by:
+  type: select
+  size: long
+  classes: fancy
+  label: 'Порядок по умолчанию'
+  help: 'Страницы в списке будут отображаться в этом порядке, если он не переопределен'
+  options:
+    default: 'По умолчанию - на основе имени папки'
+    folder: 'Папка - на основе имени папки без префикса'
+    title: 'Заголовок - на основе поля Title в заголовке'
+    date: 'Дата - на основе поля Date в заголовке'
+

Пример 2 - Отключение отдельных опций:

my_element:
+  type: select
+  size: long
+  classes: fancy
+  label: 'Мой элемент Select'
+  help: 'Используйте ключ:значение disabled для отображения, с отключением определенной опции'
+  options:
+    option1:
+      value: 'Вариант 1'
+    option2:
+      value: 'Вариант 2'
+    option3:
+      disabled: true
+      value: 'Вариант 3'
+
Атрибут Описание
options Массив разрешенных параметров «ключ-значение». Ключ будет отправлен формой.
multiple Разрешить форме принимать несколько значений.

Если вы установите для multiple значение true, вам нужно добавить

pages.order.by:
+  validate:
+    type: array
+

В противном случае массив выбранных значений не будет сохранен корректно.

Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
size
style
validate.required
validate.pattern
validate.message

Поле Select Optgroup⚓︎

Поле Select Optgroup

Тип поля select_optgroup используется для представления поля выбора с группировками.

Пример:

header.newField:
+  type: select_optgroup
+  label: Test Optgroup Select Field
+  options:
+    - OptGroup1:
+        - Option1
+        - Option2
+    - OptGroup2:
+        - Option3
+        - Option4
+
Атрибут Описание
options Массив разрешенных параметров «ключ-значение».
multiple Разрешить форме принимать несколько значений.
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
size
style
validate.required
validate.pattern
validate.message

Промежуточное поле⚓︎

Тип поля spacer используется для добавления текста, заголовка или тега hr

Пример:

test:
+  type: spacer
+  title: A title
+  text: Some text
+  underline: true
+
Атрибут Описание
title заголовок h3 для формы
text текст. Если установлен заголовок, добавьте его после заголовка
underline логический, добавлять или нет тег <hr>

Поля Tabs / Tab⚓︎

Типы полей tabs и tab используются для разделения содержащихся полей формы на вкладки.

Пример:

tabs:
+  type: tabs
+  active: 1
+
+  fields:
+    content:
+      type: tab
+      title: PLUGIN_ADMIN.CONTENT
+
+      fields:
+
+        # .... other subfields
+
+    options:
+      type: tab
+      title: PLUGIN_ADMIN.OPTIONS
+
+      fields:
+
+        # .... other subfields
+
Атрибут Описание
active Номер активной вкладки

Поле телефона⚓︎

Тип поля tel используется для представления поля ввода текста, которое принимает телефонный номер, используя элемент input типа tel.

Пример:

header.phone:
+  type: tel
+  label: 'Your Phone Number'
+
Атрибут Описание
minlength минимальная длина текста
maxlength максимальная длина текста
validate.min то же, что и минимальная длина
validate.max то же, что и максимальная длина
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
readonly
size
style
title
validate.required
validate.pattern
validate.message

Текстовое поле⚓︎

Текстовое поле

Поле text используется для представления поля ввода текста.

Пример:

header.title:
+  type: text
+  autofocus: true
+  label: PLUGIN_ADMIN.TITLE
+  minlength: 10
+  maxlength: 255
+
Атрибут Описание
prepend добавить текст или HTML в начало поля
append добавить текст или HTML в конец поля
minlength минимальная длина текста
maxlength максимальная длина текста
validate.min то же, что и минимальная длина
validate.max то же, что и максимальная длина
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
readonly
size
style
title
validate.required
validate.pattern
validate.message

Поле Textarea⚓︎

Поле Textarea

Поле textarea используется для представления поля ввода текстового поля.

Пример:

header.content:
+  type: textarea
+  autofocus: true
+  label: PLUGIN_ADMIN.CONTENT
+  minlength: 10
+  maxlength: 255
+
Атрибут Описание
rows Добавляет заданное количество строк
cols Добавляет заданное количество столбцов
minlength минимальная длина текста
maxlength максимальная длина текста
validate.min то же, что и минимальная длина
validate.max то же, что и максимальная длина
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
readonly
size
style
title
validate.required
validate.pattern
validate.message

Поле переключателя⚓︎

Тип поля toggle - это тип ввода вкл/выкл с настраиваемыми метками.

Пример:

summary.enabled:
+  type: toggle
+  label: PLUGIN_ADMIN.ENABLED
+  highlight: 1
+  help: PLUGIN_ADMIN.ENABLED_HELP
+  options:
+    1: PLUGIN_ADMIN.YES
+    0: PLUGIN_ADMIN.NO
+  validate:
+    type: bool
+
Атрибут Описание
highlight Клавиша опции для выделения (при выборе становится зеленым)
options Список параметров «ключ-значение»
Разрешены общие атрибуты
default
help
label
name
style
toggleable
validate.required
validate.type
disabled

Поле URL-адреса⚓︎

Тип поля url используется для представления поля ввода текста, которое принимает URL-адрес, используя элемент input типа url.

Пример:

header.phone:
+  type: url
+  label: 'Your Phone Number'
+
Атрибут Описание
minlength минимальная длина текста
maxlength максимальная длина текста
validate.min то же, что и минимальная длина
validate.max то же, что и максимальная длина
Разрешены общие атрибуты
autofocus
classes
default
disabled
help
id
label
name
novalidate
outerclasses
readonly
size
style
title
validate.required
validate.pattern
validate.message

Недокументированные в настоящее время поля⚓︎

Поле Описание
Array
Avatar
Color
Columns
Column
Datetime
Fieldset
Formname
Key
Month
Signature
Switch
Time
Unique Id
Value
Week
\ No newline at end of file diff --git a/forms/forms/fields-available/password_field.gif b/forms/forms/fields-available/password_field.gif new file mode 100644 index 00000000..967834e6 Binary files /dev/null and b/forms/forms/fields-available/password_field.gif differ diff --git a/forms/forms/fields-available/radio_field.gif b/forms/forms/fields-available/radio_field.gif new file mode 100644 index 00000000..a405d76e Binary files /dev/null and b/forms/forms/fields-available/radio_field.gif differ diff --git a/forms/forms/fields-available/range_field.gif b/forms/forms/fields-available/range_field.gif new file mode 100644 index 00000000..e1d40600 Binary files /dev/null and b/forms/forms/fields-available/range_field.gif differ diff --git a/forms/forms/fields-available/select_field.gif b/forms/forms/fields-available/select_field.gif new file mode 100644 index 00000000..38b870be Binary files /dev/null and b/forms/forms/fields-available/select_field.gif differ diff --git a/forms/forms/fields-available/select_optgroup_field.gif b/forms/forms/fields-available/select_optgroup_field.gif new file mode 100644 index 00000000..d8863c2c Binary files /dev/null and b/forms/forms/fields-available/select_optgroup_field.gif differ diff --git a/forms/forms/fields-available/text_field.gif b/forms/forms/fields-available/text_field.gif new file mode 100644 index 00000000..580a8996 Binary files /dev/null and b/forms/forms/fields-available/text_field.gif differ diff --git a/forms/forms/fields-available/textarea_field.gif b/forms/forms/fields-available/textarea_field.gif new file mode 100644 index 00000000..76d06743 Binary files /dev/null and b/forms/forms/fields-available/textarea_field.gif differ diff --git a/forms/forms/form-options/index.html b/forms/forms/form-options/index.html new file mode 100644 index 00000000..98f60a47 --- /dev/null +++ b/forms/forms/form-options/index.html @@ -0,0 +1,75 @@ + Параметры формы - Документация Grav CMS на русском

Ссылка: параметры формы⚓︎

Имя⚓︎

Для форм нет обязательных параметров. Однако, как указано в обзоре Фронтенд-формы, настоятельно рекомендуется иметь хотя бы имя формы:

form:
+    name: my-form
+

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

Метод⚓︎

Эта опция позволяет вам контролировать, должна ли форма быть отправлена ​​через POST или GET. По умолчанию - POST. Также обратите внимание, что если у вас есть поле file в вашей форме, к методу также будет добавлено enctype="multipart/form-data":

form:
+    method: GET
+

Action⚓︎

Действие по умолчанию будет маршрутом текущей страницы. В большинстве случаев это имеет смысл, поскольку форма должна обрабатываться на той же странице, на которой находится форма. Бывают случаи, когда вы хотите переопределить действие, чтобы указать другое расширение файла (возможно, .json) или даже указать привязку конкретной страницы:

form:
+    action: '/contact-us#contact-form'
+

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

form:
+    action: /contact-us/ajax-process
+

Если у вас есть файл подкачки с именем form-messages.html.twig, который возвращает только данные сообщения. В качестве альтернативы вы можете использовать подход ниже...

Шаблон⚓︎

Обычно шаблон страницы Twig, который отображает форму, отлично подходит для обработки любых сообщений об успехе/неудаче или ответов на встроенную проверку. Однако иногда бывает полезно отправить ответ формы, используя другой шаблон Twig. Хороший пример этого - когда вы хотите обработать форму через Ajax. Вероятно, вы хотите, чтобы шаблон возвращал только HTML для сообщений об успешном/неудачном завершении, чтобы их можно было вернуть на страницу с помощью JavaScript:

form:
+    template: form-messages
+

ID⚓︎

Возможность установить поле id на уровне формы. Если не указано, используется имя формы.

form:
+    id: my-form-id
+

Классы⚓︎

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

form:
+    classes: 'form-style form-surround'
+

Атрибуты⚓︎

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

form:
+    attributes:
+        key: value
+

Встроенные ошибки⚓︎

Установка встроенных ошибок в файле или определении Markdown формы позволяет отображать встроенные ошибки, что является важным инструментом устранения неполадок.

form:
+    inline_errors: true
+

Проверка на стороне клиента⚓︎

Отключение проверки на стороне клиента позволит вам увидеть встроенные ошибки и подробную проверку на стороне сервера, которые выходят за рамки проверки на стороне клиента HTML5. Вы можете отключить проверку на стороне клиента через form.yaml или в определении формы.

form:
+    client_side_validation: false
+

Проверка XSS⚓︎

По умолчанию Grav 1.7 и более поздние версии включают различные проверки XSS во всех формах. Настройки по умолчанию можно найти в разделе Настройка > Безопасность. Однако вы можете переопределить эти настройки для каждой формы или для каждого поля, например, вы можете отключить проверки XSS во всей форме:

form:
+    xss_check: false
+

Не рекомендуется отключать все проверки XSS, но рекомендуется переопределить определённые правила для каждого поля. Все приведенные здесь примеры также будут работать внутри поля формы.

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

form:
+    xss_check:
+        enabled_rules:
+            on_events: false
+            invalid_protocols: false
+            moz_binding: false
+            html_inline_styles: false
+            dangerous_tags: false
+

Более того, вы также можете разрешить определённые протоколы и теги:

form:
+    xss_check:
+        safe_protocols:
+            - javascript
+        safe_tags:
+            - iframe
+

Keep Alive⚓︎

Вы можете гарантировать, что ваши формы не будут отправлены по истечении вашего сеанса, включив опцию keep_alive в форме. Включив это, запрос AJAX будет отправлен в Grav до истечения вашего сеанса, чтобы он оставался «свежим»:

form:
+    keep_alive: true
+

Наборы полей⚓︎

Вы можете установить теги <fieldset></fieldset> для полей в вашей форме, используя обозначение fieldset: в форме.

form:
+    name: Example Form
+    fields:
+        example:
+            type: fieldset
+            id: my-fieldset
+            legend: 'Test Fieldset'
+            fields:
+                first_field: { type: text, label: 'First Field' }
+                second_field: { type: text, label: 'Second Field' }
+

Приведенная выше форма выводит следующее:

<form action="/grav/example/forms" class="" id="my-example-form" method="post" name="Example Form">
+  <fieldset id="my-fieldset">
+    <legend>Test Fieldset</legend>
+    <div class="form-group">
+      <div class="form-label-wrapper">
+        <label class="form-label">First Field</label>
+      </div>
+      <div class="form-data" data-grav-default="null" data-grav-disabled="true" data-grav-field="text">
+        <div class="form-input-wrapper">
+          <input class="form-input" name="data[first_field]" type="text" value="">
+        </div>
+      </div>
+    </div>
+    <div class="form-group">
+      <div class="form-label-wrapper">
+        <label class="form-label">Second Field</label>
+      </div>
+      <div class="form-data" data-grav-default="null" data-grav-disabled="true" data-grav-field="text">
+        <div class="form-input-wrapper">
+          <input class="form-input" name="data[second_field]" type="text" value="">
+        </div>
+      </div>
+    </div>
+  </fieldset>
+</form>
+

В приведенном выше примере поля появляются в наборе полей my-fieldset. Вы также заметите, что теги <legend></legend> поддерживаются параметром legend:.

\ No newline at end of file diff --git a/forms/forms/how-to-ajax-submission/index.html b/forms/forms/how-to-ajax-submission/index.html new file mode 100644 index 00000000..be551632 --- /dev/null +++ b/forms/forms/how-to-ajax-submission/index.html @@ -0,0 +1,85 @@ + Как сделать отправку через Ajax - Документация Grav CMS на русском

Как сделать отправку через Ajax⚓︎

Отправка форм через XHR/Ajax⚓︎

Механизм по умолчанию для обработки формы основан на отправке формы в стандартном стиле HTML, при которой содержимое HTML-формы отправляется на сервер либо через POST, либо через GET (по умолчанию - POST). После того, как форма была проверена и обработана, результаты отправляются обратно в форму (или на перенаправленную страницу), где отображаются сообщения, и при необходимости форму можно отредактировать для повторной отправки.

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

Автоматический подход (требуется плагин Form с версией >= v7.3.0)⚓︎

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

Чтобы включить эту функцию, просто добавьте этот параметр в чертёж формы:

xhr_submit: true
+

Вы не обязаны предоставлять action:, template: или даже id:. Плагин будет просто "работать" даже с несколькими ajax-формами на одной странице. Для этого используется новый шаблон form-xhr.html.twig, предоставляемый плагином, а также включает в себя немного ванильного JS-кода для выполнения запроса.

!! При таком подходе вся форма отправляется через XHR-запрос и заменяет весь HTML формы из ответа. Это простой подход, но при необходимости вы можете создавать собственные более сложные решения.

!!! Код Javacript, используемый для XHR-запроса, находится в файле form/layouts/xhr.html.twig. Если вам нужно, вы можете скопировать его в папку templates вашей темы (сохранив структуру путей) и изменить по мере необходимости.

Ручной подход (требуется плагин Form с версией < v7.3.0)⚓︎

Создание формы⚓︎

Вы можете создать любую стандартную форму, которая вам нравится, поэтому в этом примере мы сохраним форму как можно более простой, чтобы сосредоточиться на частях обработки Ajax. Сначала мы создадим форму на странице с именем: forms/ajax-test/ и создадим страницу формы с именем form.md:

---
+title: Тестовая форма Ajax
+form:
+  name: ajax-test-form
+  action: '/forms/ajax-test'
+  template: form-messages
+  refresh_prevention: true
+
+  fields:
+    name:
+      label: Ваше имя
+      type: text
+
+  buttons:
+    submit:
+      type: submit
+      value: Отправить
+
+  process:
+    message: 'Благодарим вас за предоставленную информацию!'
+---
+

Как видите, это очень простая форма, которая просто запрашивает ваше имя и предоставляет кнопку отправки. Единственное, что выделяется, — это часть template: form-messages. Как указано в разделе фронтенд-формы, вы можете предоставить собственный шаблон Twig, с помощью которого будет отображаться результат обработки формы. Для нас это отличный способ обработать форму, а затем просто вернуть сообщения через Ajax и вставить их на страницу. Уже существует шаблон form-messages.html.twig, поставляемый с плагином форм, который делает именно это.

Мы используем жестко запрограммированное действие action: /forms/ajax-test, поэтому ajax имеет согласованный URL, а не позволяет форме устанавливать действие для текущего маршрута страницы. Это решает проблему с запросом Ajax, который не обрабатывает перенаправления должным образом. В противном случае это может вызвать проблемы на «домашней» странице. Это не обязательно должна быть текущая страница формы, это просто должен быть согласованный, доступный маршрут.

Содержание страницы⚓︎

На этой же странице нам нужно разместить немного HTML и JavaScript:

<div id="form-result"></div>
+
+<script>
+document.addEventListener('DOMContentLoaded', function() {
+    const form = document.querySelector('#ajax-test-form');
+    form.addEventListener('submit', function(event) {
+        event.preventDefault();
+
+        const result = document.querySelector('#form-result');
+        const action = form.getAttribute('action');
+        const method = form.getAttribute('method');
+
+        fetch(action, {
+            method: method,
+            body: new FormData(form)
+        })
+        .then(function(response) {
+            if (response.ok) {
+                return response.text();
+            } else {
+                return response.json();
+            }
+        })
+        .then(function(output) {
+            if (result) {
+                result.innerHTML = output;
+            }
+        })
+        .catch(function(error) {
+            if (result) {
+                result.innerHTML = 'Ошибка: ' + error;
+            }
+
+            throw new Error(error);
+        });
+    });
+});
+</script>
+
<div id="form-result"></div>
+
+<script>
+$(document).ready(function(){
+
+    var form = $('#ajax-test-form');
+    form.submit(function(e) {
+        // prevent form submission
+        e.preventDefault();
+
+        // submit the form via Ajax
+        $.ajax({
+            url: form.attr('action'),
+            type: form.attr('method'),
+            dataType: 'html',
+            data: form.serialize(),
+            success: function(result) {
+                // Inject the result in the HTML
+                $('#form-result').html(result);
+            }
+        });
+    });
+});
+</script>
+

Сначала мы определяем заполнитель div с идентификатором #form-result, чтобы использовать его в качестве места для вставки результатов формы.

Мы используем здесь синтаксис JQuery для простоты, но, очевидно, вы можете использовать любой JavaScript, который вам нравится, если он выполняет аналогичную функцию. Сначала мы останавливаем действие формы по умолчанию и выполняем Ajax-вызов действия формы с сериализованными данными формы. Результат этого вызова затем возвращается в тот div, который мы создали ранее.

\ No newline at end of file diff --git a/forms/forms/how-to-ajax-submission/simple-form.png b/forms/forms/how-to-ajax-submission/simple-form.png new file mode 100644 index 00000000..379b4a2d Binary files /dev/null and b/forms/forms/how-to-ajax-submission/simple-form.png differ diff --git a/forms/forms/how-to-ajax-submission/submitted-form.png b/forms/forms/how-to-ajax-submission/submitted-form.png new file mode 100644 index 00000000..80e5eb06 Binary files /dev/null and b/forms/forms/how-to-ajax-submission/submitted-form.png differ diff --git a/forms/forms/how-to-forms-in-modular-pages/index.html b/forms/forms/how-to-forms-in-modular-pages/index.html new file mode 100644 index 00000000..b9947567 --- /dev/null +++ b/forms/forms/how-to-forms-in-modular-pages/index.html @@ -0,0 +1,30 @@ + Как разместить формы на модульных страницах - Документация Grav CMS на русском

Как разместить формы на модульных страницах⚓︎

Использование форм на модульных страницах⚓︎

Если ваша тема не предоставляет файл templates/forms/form.html.twig, он не настроен на использование форм, но не бойтесь — просто скопируйте шаблоны форм из Antimatter, темы Grav по умолчанию:

  • templates/form.html.twig
  • templates/formdata.html.twig

Теперь создайте модульную папку с типом страницы form.md

Например: 01.your-modular-page/_contact/form.md.

Страница form.md не будет содержать определения формы. Это просто признак того, что это та часть, которая должна выводить форму.

Важно: установить

---
+cache_enable: false
+---
+

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

Теперь добавьте заголовок формы на главную модульную страницу, modular.md.

Страница modular.md должна содержать полное определение формы с полями и т. д., как если бы это был заголовок файла form.md «на всю страницу». С собственным путем к странице в качестве поля form.action.

В Form v2.0 теперь вы можете определять форму непосредственно на модульной подстранице, как и любую другую форму. Однако, если он не найден, плагин формы будет искать на «текущей странице», то есть на модульной странице верхнего уровня для формы, поэтому он полностью обратно совместим со способом работы 1.0.

Например:

---
+content:
+    items: '@self.modular'
+
+form:
+    action: /your-modular-page
+    name: my-nice-form
+    fields:
+        -
+            name: name
+            label: Name
+            placeholder: 'Enter your name'
+            autofocus: 'on'
+            autocomplete: 'on'
+            type: text
+            default: test
+
+    buttons:
+        -
+            type: submit
+            value: Submit
+
+    process:
+        -
+            message: 'Thank you for your feedback!'
+---
+

Убедитесь, что в заголовке формы вы добавили параметр action с модульным маршрутом страницы

Как и в примере выше. Этот шаг необходим, потому что, если вы явно не добавляете form.action, код обычно ищет маршрут страницы, но, будучи формой на модульной подстранице, а не на фактической странице, путь неверен и нарушает отправку формы.

Итак, если модульная страница, например, site.com/my-page, просто поместите form: action: /my-page в modular.md. Даже если модульная страница является домашней страницей, используйте маршрут страницы, например form: action: /home

Живой пример⚓︎

В скелете Deliver есть страница модульной формы, которую можно увидеть при чтении этого руководства:

Live page

Page markdown file

Устранение неполадок в формах на модульных страницах⚓︎

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

  • Я предлагаю создать «обычную форму», убедившись, что она работает, а затем попытаться преобразовать её в модульную.
  • Попробуйте заставить форму работать на скелете на основе темы Antimatter, который содержит все файлы, которые вам уже нужны.
  • Если поля формы не отображаются, если вы установили плагин Assets, отключите/удалите его. Известная проблема, связанная с нарушением модульных форм, скоро будет исправлена.
\ No newline at end of file diff --git a/forms/forms/index.html b/forms/forms/index.html new file mode 100644 index 00000000..cd1fae9d --- /dev/null +++ b/forms/forms/index.html @@ -0,0 +1,119 @@ + Обзор - Документация Grav CMS на русском

Фронтенд-формы⚓︎

Плагин Form дает вам возможность создавать практически любые типы веб-форм. По сути, это набор для создания форм, который вы можете использовать на своих страницах. Прежде чем идти дальше, не забудьте установить плагин Form с помощью bin/gpm install form, если он ещё не установлен .

Чтобы понять, как работает плагин Form, давайте начнем с того, как создать простую форму.

В выпуске Form 2.0 теперь требуется передавать имя формы как скрытое поле. Если вы используете предоставленный плагином формы forms.html.twig, это обрабатывается автоматически, однако, если вы переопределили стандартный forms.html.twig в своей теме или подключаемом модуле, вам следует вручную добавить {% include "forms/fields/formname/formname.html.twig" %} в вашем файле Twig для рендеринга форм.

Создание простой формы⚓︎

Чтобы добавить форму на страницу вашего сайта, создайте страницу и установите для её файла подкачки значение «Форма». Вы можете сделать это через панель админки или через файловую систему напрямую, указав страницу form.md.

Например, user/pages/03.your-form/form.md.

Содержимое этой страницы будет:

---
+title: A Page with an Example Form
+form:
+    name: contact-form
+    fields:
+        name:
+          label: Name
+          placeholder: Enter your name
+          autofocus: on
+          autocomplete: on
+          type: text
+          validate:
+            required: true
+
+        email:
+          label: Email
+          placeholder: Enter your email address
+          type: email
+          validate:
+            required: true
+
+    buttons:
+        submit:
+          value: Submit
+        reset:
+          value: Reset
+
+    process:
+        email:
+            from: "{{ config.plugins.email.from }}"
+            to:
+              - "{{ config.plugins.email.to }}"
+              - "{{ form.value.email }}"
+            subject: "[Отзыв] {{ form.value.name|e }}"
+            body: "{% include 'forms/data.html.twig' %}"
+        save:
+            fileprefix: feedback-
+            dateformat: Ymd-His-u
+            extension: txt
+            body: "{% include 'forms/data.txt.twig' %}"
+        message: Спасибо за ваш отзыв!
+        display: thankyou
+
+---
+
+# Моя форма
+
+Здесь идет обычный **Markdown**...
+

Это содержимое файла form.md при просмотре через файловую систему. Для этого с помощью подключаемого модуля администратора откройте страницу в режиме эксперта, скопируйте часть между тройными дефисами --- и вставьте её в поле Frontmatter.

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

Что происходит, когда вы нажимаете кнопку «Отправить»? Он последовательно выполняет действия process. Чтобы узнать о других действиях, проверьте доступные варианты или создайте собственные.

  1. На указанный адрес электронной почты будет отправлено электронное письмо с темой «[Отзыв] [введенное имя]». Тело электронного письма определяется в файле forms/data.html.twig используемой темы.

  2. В user/data создается файл для хранения входных данных формы. Шаблон определен в файле forms/data.txt.twig используемой темы.

  3. Отображается подстраница «thankyou» вместе с переданным сообщением. Страница thankyou должна быть подстраницей страницы, содержащей форму.

Убедитесь, что вы настроили плагин Email для успешной отправки электронной почты.

Несколько форм⚓︎

С выпуском Form Plugin v2.0 теперь вы можете определять несколько форм на одной странице. Синтаксис похож, но каждая форма различается по имени формы, в данном случае contact-form и newsletter-form:

forms:
+    contact-form:
+        fields:
+            ...
+        buttons:
+            ...
+        process:
+            ...
+
+    newsletter-form:
+        fields:
+            ...
+        buttons:
+            ...
+        process:
+            ...
+

Вы даже можете использовать этот формат для отдельных форм, просто указав одну форму в разделе forms::

forms:
+    contact-form:
+        fields:
+            ...
+        buttons:
+            ...
+        process:
+            ...
+

Отображение форм из Twig⚓︎

Самый простой способ включить форму - просто включить файл Twig в шаблон, который отображает страницу, на которой определена форма. Например:

{% include "forms/form.html.twig" %}
+

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

Однако существует более мощный метод отображения форм, в котором можно использовать преимущества новой поддержки нескольких форм. С помощью этого метода вы фактически передаете в шаблон Twig параметр form:, определяющий форму, которую вы хотите отобразить:

{% include "forms/form.html.twig" with { form: forms('contact-form') } %}
+

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

Вы даже можете отображать несколько форм на одной странице:

# Контактная форма
+{% include "forms/form.html.twig" with { form: forms('contact-form') } %}
+
+# Подписка на новости
+{% include "forms/form.html.twig" with { form: forms('newsletter-form') } %}
+

Альтернативный способ отображения формы - ссылаться на маршрут страницы, а не на имя формы, используя массив, например:

# Контактная форма
+{% include "forms/form.html.twig" with { form: forms( {route:'/forms/contact'} ) } %}
+

Это найдет первую форму на странице с маршрутом /forms/contact.

Отображение форм в содержимом страницы⚓︎

Вы также можете отображать форму прямо из содержимого вашей страницы (например, default.md), даже если на этой странице не определена форма. Просто передайте в форму имя или маршрут.

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

---
+title: Page with Forms
+process:
+  twig: true
+cache_enable: false
+---
+
+# Контактная форма
+{% include "forms/form.html.twig" with {form: forms('contact-form')} %}
+
+# Подписка на новости
+{% include "forms/form.html.twig" with {form: forms( {route: '/newsletter-signup'} ) } %}
+

Модульные формы⚓︎

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

В Form v2.0 теперь вы можете определять форму непосредственно на модульной подстранице, как и любую другую форму. Однако, если он не найден, плагин формы будет искать на «текущей странице», то есть на модульной странице верхнего уровня для формы, поэтому он полностью обратно совместим со способом работы 1.0.

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

При использовании формы, определенной на модульной подстранице, вы должны установить action: на родительскую модульную страницу и настроить форму с помощью действия redirect: или display:, так как модульная подстраница не подходит для загрузки при отправке формы, потому что она не маршрутизируется и, следовательно, недоступна для браузера.

Вот пример, который существует в form/modular/_form/form.md:

---
+title: Модульная форма
+
+form:
+  action: '/form/modular'
+  inline_errors: true
+  fields:
+    person.name:
+      type: text
+      label: Name
+      validate:
+        required: true
+
+  buttons:
+    submit:
+      type: submit
+      value: Submit
+
+  process:
+    message: "Thank you from your submission <b>{{ form.value('person.name') }}</b>!"
+    reset: true
+    display: '/form/modular'
+---
+
+## Модульная форма
+
\ No newline at end of file diff --git a/forms/forms/reference-form-actions/index.html b/forms/forms/reference-form-actions/index.html new file mode 100644 index 00000000..a0d7af47 --- /dev/null +++ b/forms/forms/reference-form-actions/index.html @@ -0,0 +1,119 @@ + Действия формы - Документация Grav CMS на русском

Ссылка: действия формы⚓︎

Действия формы⚓︎

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

Имейл⚓︎

Отправляет электронное письмо с указанными опциями.

Пример:

process:
+    - email:
+        from: "{{ config.plugins.email.from }}"
+        to: "{{ config.plugins.email.to }}"
+        subject: "Contact by {{ form.value.name|e }}"
+        body: "{% include 'forms/data.html.twig' %}"
+

Отправляет электронное письмо с адреса электронной почты, указанного в конфигурации плагина электронной почты, отправляет его на тот же адрес электронной почты (это контактная форма, мы отправляем её себе). Если вы не хотите использовать другие значения, вы можете свободно опускать from и to, поскольку они уже настроены по умолчанию для использования этих значений. Письмо имеет заданную тему и тело. В этом случае тело создается файлом forms/data.html.twig, который находится в активном шаблоне (он есть в Antimatter и других основных темах, но не гарантируется, что каждая тема включает его).

Antimatter устанавливает его в

{% for field in form.fields %}
+    <div><strong>{{ field.label }}</strong>: {{ string(form.value(field.name)|e) }}</div>
+{% endfor %}
+

Короче говоря, он просто зацикливает значения и печатает их в теле письма.

Дополнительные важные параметры электронной почты для формы см. в документации к модулю электронной почты включая составные тела сообщения (хорошо для оценки защиты от спама), reply_to и вложения.

Атрибут динамической электронной почты⚓︎

Если вы хотите, например, установить поле email.from из ввода формы, вы можете получить его содержимое и использовать его следующим образом:

from: "{{ form.value.email }}"

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

Перенаправление⚓︎

Перенаправляет пользователя на другую страницу. Действие выполняется немедленно, поэтому, если вы его используете, вам, вероятно, нужно поместить его в конец списка действий.

process:
+    - redirect: '/forms/landing-page'
+

Вы также можете установить некоторые или все поля redirect из поля ввода формы или скрытого поля формы. Вы можете получить его содержимое и использовать его следующим образом:

redirect: "/path to/location/{{ form.value.hiddenfield }}"

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

Сообщение⚓︎

Устанавливает сообщение, которое будет показано при отправке формы.

process:
+    - message: Спасибо за ваш отзыв!
+    - display: thankyou
+

По умолчанию сообщение будет выводиться в начале элемента form.

Однако вы можете по желанию изменить представление либо через display, либо через redirect.

Сообщение о проверке⚓︎

Вы можете использовать сообщение о непройденной валидации. Например:

username:
+   type: text
+   label: Имя пользователя
+   validate:
+     required: true
+     message: Пользовательское сообщение при неудачной валидации!
+

Это позволит вам написать собственное сообщение, которое пользователи увидят в случае неудачной проверки.

Display⚓︎

После отправки формы её представление будет обновлено, чтобы встроить подстраницу. Так, например, если ваша форма находится в /form, вы можете встроить подстраницу /form/thankyou с помощью следующего кода:

process:
+    - display: thankyou
+

Если вы предпочитаете вставлять абсолютный путь к странице, например site.com/thankyou, добавьте к нему /: display: /thankyou/.

Плагин Form предоставляет шаблон formdata, который подходит для указания целевой страницы, поскольку он выводит результат отправки формы. В приведенном выше примере вы можете создать страницу pages/form/thankyou/formdata.md.

Antimatter и совместимые темы предоставляют шаблон Twig formdata.html.twig, который выглядит следующим образом:

{% extends 'partials/base.html.twig' %}
+
+{% block content %}
+
+    {{ content }}
+
+    <div class="alert">{{ form.message }}</div>
+    <p>Here is the summary of what you wrote to us:</p>
+
+    {% include "forms/data.html.twig" %}
+
+{% endblock %}
+

Если страница thankyou/formdata.md

---
+title: Электронное письмо отправлено!
+cache_enable: false
+process:
+    twig: true
+---
+
+## Электронное письмо отправлено!
+

Результатом будет страница с надписью «Электронное письмо отправлено!», за которой следует подтверждающее сообщение и данные формы, введенные на предыдущей странице.

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

Сохранение⚓︎

Сохраняет данные формы в файл. Файл сохраняется в папке user/data во вложенной папке, названной параметром form.name. Форма должна иметь имя для успешного выполнения этого действия, а подпапка должна быть создана с соответствующими разрешениями, прежде чем данные могут быть сохранены в ней, поскольку новый каталог не будет создан, если он не существует. Например:

fileprefix иbody могут содержать разметку Twig.

process:
+    - save:
+        fileprefix: feedback-
+        dateformat: Ymd-His-u
+        extension: txt
+        body: "{% include 'forms/data.txt.twig' %}"
+        operation: create
+

Тело берется из файла темы templates/forms/data.html.twig, предоставленного Antimatter и обновленными темами.

«Операция» может быть либо create (по умолчанию) для создания нового файла для отправки формы, либо add для добавления в отдельный файл.

Обратите внимание, что для операции add теперь требуется статическое имя файла: для определения см. пример ниже.

process:
+    - save:
+        filename: feedback.txt
+        body: "{% include 'forms/data.txt.twig' %}"
+        operation: add
+

Капча⚓︎

Чтобы также проверить правильность ввода капчи на стороне сервера, добавьте действие процесса ввода капчи.

    process:
+        - captcha:
+            recaptcha_secret: ENTER_YOUR_CAPTCHA_SECRET_KEY
+

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

IP-адрес пользователя⚓︎

Отображение IP-адреса пользователя на выходе. Поместите его над процессами электронной почты/сохранения в form.md, чтобы убедиться, что он используется процессами вывода.

process:
+    - ip:
+        label: User IP Address
+

Timestamp⚓︎

Добавьте к выходным данным отметку времени отправки формы. Поместите его над процессами электронной почты/сохранения в form.md, чтобы убедиться, что он используется процессами вывода.

process:
+    - timestamp:
+        label: Submission Timestamp
+

Сброс формы после отправки⚓︎

По умолчанию форма не очищается после отправки. Таким образом, если у вас нет действия display и пользователь отправляется обратно на страницу формы, она все равно заполнена введенными данными. Если вы хотите избежать этого, добавьте действие reset:

process:
+    - reset: true
+

Запоминание значений полей⚓︎

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

HTML5 и плагин Form уже предоставляют такую возможность в ограниченном объеме через браузер, так что пользуйтесь этим. Однако вы можете обнаружить, что автозаполнение не работает надежно для некоторых пользователей и полей.

Действие remember использует куки для хранения последнего значения, поэтому оно будет работать только на том же устройстве и в том же браузере, где браузер настроен на разрешение их использования на вашем сайте.

Чтобы воспользоваться этим действием, просто перечислите имена полей, которые вы хотели бы запомнить.

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

process:
+    - remember:
+        - referrer-name
+        - referrer-address
+        - referrer-specialty
+        - preferred-practitioner
+

Настраиваемые действия⚓︎

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

Для этого в поле процесса формы добавьте собственное имя обработки, например yourAction.

process:
+    yourAction: true
+

Затем создайте простой плагин.

В своем основном файле PHP зарегистрируйтесь для события onFormProcessed

<?php
+
+namespace Grav\Plugin;
+use Grav\Common\Plugin;
+use RocketTheme\Toolbox\Event\Event;
+
+class EmailPlugin extends Plugin
+{
+    public static function getSubscribedEvents()
+    {
+        return [
+            'onFormProcessed' => ['onFormProcessed', 0]
+        ];
+    }
+}
+

Затем укажите обработчик для действия saveToDatabase:

<?php
+
+    public function onFormProcessed(Event $event)
+    {
+        $form = $event['form'];
+        $action = $event['action'];
+        $params = $event['params'];
+
+        switch ($action) {
+            case 'yourAction':
+                //do what you want
+        }
+    }
+

Если ваша обработка может пойти не так, и вы хотите остановить следующие действия формы, которые выполняются последовательно, вы можете остановить обработку, вызвав stopPropagation для объекта $event:

$event->stopPropagation();
+return;
+

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

Пример обработки нестандартной формы⚓︎

Плагин Form предлагает возможность отправлять электронные письма, сохранять файлы, устанавливать статусные сообщения, и это действительно удобно. Однако иногда вам нужен полный контроль. Это, например, то, что делает плагин входа в систему (Login).

Он определяет внешний вид страницы login.md:

title: Login
+template: form
+
+form:
+    name: login
+
+    fields:
+        - name: username
+          type: text
+          placeholder: Username
+          autofocus: true
+
+        - name: password
+          type: password
+          placeholder: Password
+

Плагин Forms правильно генерирует и отображает форму. Обратите внимание, что нет определения «процесса».

Также отсутствуют формы buttons, так как они вручную добавляются в templates/login.html.twig. Здесь также определяются формы «действие» и «задача».

В этом случае задача - это login.login, а действие устанавливается на адрес страницы.

Когда пользователь нажимает "Войти" в форме, Grav вызывает событие onTask.login.login.

user/plugins/login/login.php подключается к onTask.login.login к своему файлу classes/controller.php, и там происходит аутентификация.

\ No newline at end of file diff --git a/forms/index.html b/forms/index.html new file mode 100644 index 00000000..81d33fad --- /dev/null +++ b/forms/index.html @@ -0,0 +1 @@ + Введение - Документация Grav CMS на русском

Формы⚓︎

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

Кроме того, здесь можно узнать о создании форм фронтенда.

\ No newline at end of file diff --git a/hints-tips/metadata/index.html b/hints-tips/metadata/index.html new file mode 100644 index 00000000..57764939 --- /dev/null +++ b/hints-tips/metadata/index.html @@ -0,0 +1,24 @@ + Метаданные блогов - Документация Grav CMS на русском

Метаданные блогов⚓︎

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

Вы должны добавить эту информацию в секции заголовков на вашей странице Grav.

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

В начале каждого сообщения в блоге вам нужно иметь следующее:

---
+title: Заголовок сообщения в блоге
+publish_date: Дата публикации сообщения в блоге
+date: Дата написания сообщения в блоге
+metadata:
+    'og:title': Заголовок сообщения в блоге
+    'og:type': article
+    'og:description': Описание того, о чем идет речь в вашем блоге. Это будет видно, когда люди поделятся вашим сообщением в социальных сетях.
+    'og:url': URL-адрес сообщения в блоге
+    'og:site_name': Название всего сайта, которому принадлежит сообщение в блоге.
+    'og:locale': Язык, на котором написано ваше сообщение в блоге.
+    'og:image': Изображение, на которое вы здесь ссылаетесь, будет видно при публикации в социальных сетях.
+    'twitter:card' : Тип карточки Twitter, которую следует использовать.
+    'twitter:site' : Имя вашего аккаунта в Twitter
+    'twitter:title' : Заголовок сообщения в блоге
+    'twitter:description' : Описание того, о чем идет речь в вашем блоге. Это будет видно, когда люди поделятся вашим сообщением в социальных сетях.
+    'twitter:image' : Изображение, на которое вы здесь ссылаетесь, будет видно при публикации в социальных сетях.
+    'twitter:creator': Дескриптор твиттера автора сообщения в блоге.
+taxonomy:
+    category: [Категория сообщений в блоге]
+    tag: [тег 1, тег 2, тег 3, тег 4]
+    author: Имя автора
+---
+

Подробнее о карточках Twitter

Подробнее о протоколе Open Graph

\ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..c61077b4 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ + Документация Grav CMS на русском

Введение⚓︎

Вашему вниманию представлена переведённая и доработанная версия оригинальной документации Grav CMS. Раз в несколько месяцев вносятся исправления, в соответствии с официальной документацией.

Цель проекта — предоставить более удобный доступ к информации о Grav CMS.

\ No newline at end of file diff --git a/plugins/event-hooks/index.html b/plugins/event-hooks/index.html new file mode 100644 index 00000000..442ff60c --- /dev/null +++ b/plugins/event-hooks/index.html @@ -0,0 +1,36 @@ + Хуки событий - Документация Grav CMS на русском

Хуки событий⚓︎

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

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

Порядок событий⚓︎

Большинство событий в Grav происходят в определенном порядке, и важно понимать этот порядок, если вы создаете плагины:

  1. onFatalException (нет порядка, может произойти в любое время)
  2. PluginsLoadedEvent class (1.7)
  3. PluginsLoadedEvent class (1.7)
  4. onPluginsInitialized
  5. FlexRegisterEvent class (1.7)
  6. onThemeInitialized
  7. onRequestHandlerInit (1.6)
  8. onTask (1.6)
  9. onTask.{task}
  10. onAction (1.6)
  11. onAction.{action} (1.6)
  12. onBackupsInitialized
  13. onSchedulerInitialized (1.6)
  14. onAssetsInitialized
  15. onTwigTemplatePaths
  16. onTwigLoader
  17. onTwigInitialized
  18. onTwigExtensions
  19. onBuildPagesInitialized (один раз при повторной обработке страниц)
  20. onPageProcessed (каждая страница, ещё не кэшированная)
  21. onFormPageHeaderProcessed (1.6) (каждая страница, ещё не кэшированная)
  22. onFolderProcessed (для каждой найденной папки)
  23. onPagesInitialized
  24. onPageInitialized
  25. onPageContentRaw (каждая страница, ещё не кэшированная)
  26. onMarkdownInitialized
  27. onPageContentProcessed (каждая страница, ещё не кэшированная)
  28. onPageContent (вызывается при первом вызове Page::content() даже при кэшировании.)
  29. onPageNotFound
  30. onPageAction (1.6)
  31. onPageAction.{action} (1.6)
  32. onPageTask (1.6)
  33. onPageTask.{task} (1.6)
  34. onTwigPageVariables (каждая страница, ещё не кэшированная)
  35. onHttpPostFilter (1.5.2)
  36. onTwigSiteVariables
  37. onCollectionProcessed (по запросу коллекции)
  38. onOutputGenerated
  39. onPageHeaders
  40. onOutputRendered
  41. onShutdown

Разные события:

  1. onBlueprintCreated
  2. onTwigTemplateVariables
  3. onTwigStringVariables
  4. onBeforeDownload
  5. onPageFallBackUrl
  6. onMediaLocate
  7. onGetPageBlueprints
  8. onGetPageTemplates
  9. onFlexObjectRender (1.6)
  10. onFlexCollectionRender (1.6)
  11. onBeforeCacheClear
  12. onImageMediumSaved (ImageFile)
  13. onAfterCacheClear (1.7)
  14. onHttpPostFilter (1.7)
  15. PermissionsRegisterEvent class (1.7)

Хуки событий ядра Grav⚓︎

Есть несколько основных обработчиков событий Grav, которые запускаются во время обработки страницы:

onFatalException⚓︎

Это событие может быть запущено в любое время, если PHP выдает фатальное исключение. В настоящее время это используется плагином problems для обработки списка возможных причин, по которым Grav выдает фатальное исключение.

onPluginsInitialized⚓︎

Это первое доступное событие плагина. На данный момент были инициированы следующие объекты:

  • Uri
  • Config
  • Debugger
  • Cache
  • Plugins

Плагин не будет загружен вообще, если для этого конкретного плагина установлена ​​опция конфигурации enabled: false.

onAssetsInitialized⚓︎

Событие означает, что менеджер активов инициализирован и готов к добавлению активов и управлению ими.

onPagesInitialized⚓︎

Это событие означает, что все страницы в папке Grav user/pages были загружены как объекты и доступны в объекте Pages.

onPageNotFound⚓︎

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

onPageInitialized⚓︎

Текущая страница по запросу URL загружена в объект Page.

onOutputGenerated⚓︎

Вывод был обработан механизмом создания шаблонов Twig и теперь представляет собой всего лишь строку HTML.

onPageHeaders⚓︎

Позволяет манипулировать объектом заголовков страницы.

onOutputRendered⚓︎

Вывод был полностью обработан и отправлен на дисплей.

onShutdown⚓︎

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

onBeforeDownload⚓︎

Это новое событие передает объект события, содержащий file. Это событие можно использовать для ведения журнала или предоставления/запрета доступа для загрузки указанного файла.

onGetPageTemplates⚓︎

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

Пример

/**
+ * Add page template types.
+ */
+public function onGetPageTemplates(Event $event)
+{
+    /** @var Types $types */
+    $types = $event->types;
+    $types->register('downloads');
+}
+

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

onGetPageBlueprints⚓︎

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

Пример

<?php
+
+$scanBlueprintsAndTemplates = function () use ($grav) {
+    // Scan blueprints
+    $event = new Event();
+    $event->types = self::$types;
+    $grav->fireEvent('onGetPageBlueprints', $event);
+
+    self::$types->scanBlueprints('theme://blueprints/');
+
+    // Scan templates
+    $event = new Event();
+    $event->types = self::$types;
+    $grav->fireEvent('onGetPageTemplates', $event);
+
+    self::$types->scanTemplates('theme://templates/');
+};
+

В этом примере мы используем хуки onGetPageTemplates и onGetPageBlueprints, чтобы сделать эти предоставляемые плагином ресурсы (шаблоны и чертежи) доступными Grav для наследования и других целей.

Хуки событий Twig⚓︎

Twig имеет собственный набор обработчиков событий.

onTwigTemplatePaths⚓︎

Базовые местоположения для путей к шаблонам были установлены на объекте Twig. Если вам нужно добавить другие места, где Twig будет искать пути к шаблонам, используйте это событие.

Пример

<?php
+
+/**
+ * Add template directory to twig lookup path.
+ */
+ public function onTwigTemplatePaths()
+ {
+     $this->grav['twig']->twig_paths[] = __DIR__ . '/templates';
+ }
+

onTwigInitialized⚓︎

На этом этапе шаблонизатор Twig инициализирован.

onTwigExtensions⚓︎

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

onTwigPageVariables⚓︎

Где Twig обрабатывает страницу напрямую, то есть когда вы устанавливаете process: twig: true в заголовках YAML страницы. Здесь вы должны добавить в Twig любые переменные, которые должны быть доступны Twig во время этого процесса.

onTwigSiteVariables⚓︎

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

Хуки событий коллекции⚓︎

onCollectionProcessed⚓︎

Если вам нужно манипулировать коллекцией после того, как она была обработана, самое время это сделать.

Хуки событий страницы⚓︎

onBuildPagesInitialized⚓︎

Это событие запускается один раз, когда страницы будут повторно обработаны. Обычно это происходит, если срок действия кэша истек или его необходимо обновить. Это полезное событие для плагинов, которым необходимо управлять контентом и кэшировать результаты.

onBlueprintCreated⚓︎

Это используется для обработки и обработки форм.

onPageContentRaw⚓︎

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

onPageProcessed⚓︎

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

onMarkdownInitialized⚓︎

Вызывается при инициализации Markdown. Позволяет переопределить реализацию обработки Parsedown по умолчанию. См. Пример использования в PR.

onPageContentProcessed⚓︎

Это событие запускается после того, как метод страницы content() обработал содержимое страницы. Это особенно полезно, если вы хотите выполнять действия с постобработанным содержимым, но при этом убедитесь, что результаты кэшируются. Производительность не является проблемой, потому что это событие не будет запускаться на кэшированной странице, только когда кэш очищен или происходит событие очистки кэша.

onFolderProcessed⚓︎

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

onPageFallBackUrl⚓︎

Если маршрут не распознается как страница, Grav пытается получить доступ к медиаресурсу страницы. Событие запускается, как только начинается процедура, поэтому плагины могут подключаться и предоставлять дополнительные функции.

onMediaLocate⚓︎

Добавляет поддержку пользовательских медиа-расположений для отрывков (excerpts).

onTwigLoader⚓︎

Добавляет поддержку использования пространств имен вместе с двумя новыми методами в классе Twig: Twig::addPath($path, $namespace) и Twig::prependPath($path, $namespace).

\ No newline at end of file diff --git a/plugins/event-hooks/ongetpagetemplates.png b/plugins/event-hooks/ongetpagetemplates.png new file mode 100644 index 00000000..bbbcb156 Binary files /dev/null and b/plugins/event-hooks/ongetpagetemplates.png differ diff --git a/plugins/grav-lifecycle/index.html b/plugins/grav-lifecycle/index.html new file mode 100644 index 00000000..b0209dee --- /dev/null +++ b/plugins/grav-lifecycle/index.html @@ -0,0 +1,195 @@ + Жизненный цикл Grav - Документация Grav CMS на русском

Жизненный цикл Grav⚓︎

Часто бывает полезно знать, как работает Grav, чтобы полностью понять, как лучше всего расширить Grav с помощью плагинов. Это жизненный цикл Grav:

index.php

1. Проверка версии PHP, чтобы убедиться, что используется хотя бы версия **7.3.6**
+2. Инициализация загрузчика классов
+3. Получение экземпляров Grav
+

Grav.php

1. Экземпляра не существует, поэтому вызываем `load()`
+2. Добавляем `loader`
+3. Добавляем и инициализируем `debugger`
+4. Добавляем `grav` (устарело)
+5. Регистрируем сервисы по умолчанию
+6. Регистрируем Service Providers
+    * Accounts Service Provider
+        1. Добавляем `permissions` (1.7)
+        2. Добавляем `accounts` (1.6)
+        3. Добавляем `user_groups` (1.7)
+        4. Добавляем `users` _(устарело)_
+    * Assets Service Provider
+        1. Добавляем `assets`
+    * Backups Service Provider
+        1. Добавляем `backups` (1.6)
+    * Config Service Provider
+        1. Добавляем `setup`
+        2. Добавляем `blueprints`
+        3. Добавляем `config`
+        4. Добавляем `languages`
+        5. Добавляем `language`
+    * Error Service Provider
+        1. Добавляем `error`
+    * Filesystem Service Provider
+        1. Добавляем `filesystem`
+    * Flex Service Provider
+        1. Добавляем `flex` (1.7)
+    * Inflector Service Provider
+        1. Добавляем `inflector`
+    * Logger Service Provider
+        1. Добавляем `log`
+    * Output Service Provider
+        1. Добавляем `output`
+    * Pages Service Provider
+        1. Добавляем `pages`
+        2. Добавляем `page`
+    * Request Service Provider
+        1. Добавляем `request` (1.7)
+    * Scheduler Service Provider
+        1. Добавляем `scheduler` (1.6)
+    * Session Service Provider
+        1. Добавляем `session`
+        2. Добавляем `messages`
+    * Streams Service Provider
+        1. Добавляем `locator`
+        2. Добавляем `streams`
+    * Task Service Provider
+        1. Добавляем `task`
+        2. Добавляем `action`
+    * Simple Service Providers
+        1. Добавляем `browser`
+        2. Добавляем `cache`
+        3. Добавляем `events`
+        4. Добавляем `exif`
+        5. Добавляем `plugins`
+        6. Добавляем `taxonomy`
+        7. Добавляем `themes`
+        8. Добавляем `twig`
+        9. Добавляем `uri`
+
4. Вызов `Grav::process()`
+

Grav.php

1. Запускаем обработчик Initialize
+    * Configuration
+        1. Инициализируем `$grav['config']`
+        2. Инициализируем `$grav['plugins']`
+    * Logger
+        1. Инициализируем `$grav['log']`
+    * Errors
+        1. Инициализируем `$grav['errors']`
+        2. Регистрируем обработчики ошибок PHP
+    * Debugger
+        1. Инициализируем `$grav['debugger']`
+    * Обрабатываем запросы отладчика
+    * Начинаем буферизацию вывода
+    * Localization
+        1. Устанавливаем локаль и часовой пояс
+    * Plugins
+        1. Инициализируем `$grav['plugins']`
+    * Pages
+        1. Инициализируем `$grav['pages']`
+    * Uri
+        1. Инициализируем `$grav['uri']`
+        2. Добавляем `$grav['base_url_absolute']`
+        3. Добавляем `$grav['base_url_relative']`
+        4. Добавляем `$grav['base_url']`
+    * Handle redirect
+        1. Делаем перенаправление, если `system.pages.redirect_trailing_slash` имеет значение `true` и в URL есть завершающий слэш
+    * Accounts
+        1. Инициализируем `$grav['accounts']`
+    * Session
+        1. Инициализируем `$grav['session']`, если `system.session.initialize` имеет значение `true`
+2. Запускаем обработчик Plugins
+    * Запускаем событие **onPluginsInitialized**
+3. Запускаем обработчик Request
+    * Инициализируем `$grav['request']`
+    * Запускаем событие **onRequestHandlerInit** с [request, handler]
+    * Если ответ устанавливается внутри события, останавливаем дальнейшую обработку и выводим ответ
+4. Запускаем обработчик Tasks
+    * Если запрос имеет атрибут _controller.class_, либо _task_, либо _action_:
+        * Запускаем контроллер
+        * Если `NotFoundException`: продолжаем (проверяем задачу и действие)
+        * Если код ответа 418: продолжаем (игнорируем задачу и действие)
+        * Иначе: останавливаем дальнейшую обработку и выводим ответ
+    * Если _task_:
+        * Запускаем событие **onTask**
+        * Запускаем событие **onTask.[TASK]**
+    * Если _action_
+        * Запускаем событие **onAction**
+        * Запускаем событие **onAction.[ACTION]**
+5. Запускаем обработчик Backups
+    * Инициализируем `$grav['backups']`
+    * Запускаем событие **onBackupsInitialized**
+6. Запускаем обработчик Scheduler
+    * Инициализируем `$grav['scheduler']`
+    * Запускаем событие **onSchedulerInitialized**
+7. Запускаем обработчик Assets
+    * Инициализируем `$grav['assets']`
+    * Запускаем событие **onAssetsInitialized**
+8. Запускаем обработчик Twig
+    * Инициализируем `$grav['twig']`
+

Twig.php

* Задаем пути к шаблонам Twig на основе конфигурации
+* Обрабатываем языковые шаблоны, если они доступны
+* Запускаем событие **onTwigTemplatePaths**
+* Запускаем событие **onTwigLoader**
+* Загружаем конфигурацию Twig и цепочку загрузчика
+* Запускаем событие **onTwigInitialized**
+* Загружаем расширения Twig
+* Запускаем событие **onTwigExtensions**
+* Устанавливаем стандартные переменные Twig (config, uri, taxonomy, assets, browser и т. д.)
+
9. Запускаем обработчик Pages
+    * Инициализируем `$grav['pages']`
+

Pages.php

* Вызываем `buildPages()`
+* (логика несколько отличается для Flex-страниц, но идея та же)
+* Проверяем наличие кэша
+* Если **кэш в порядке**, загружаем данные страниц из него
+* Если **кэш отсутствует**, вызываем `recurse()`
+* Запускаем событие **onBuildPagesInitialized** в `recurse()`
+* Если файл `.md` найден:
+

Page.php

* Вызываем `init()` для загрузки сведений о файле
+* Устанавливаем `filePath`, `modified`, `id`
+* Вызываем `header()` для инициализации переменных заголовка
+* Вызываем `slug()` для установки слага URL
+* Вызываем `visible()` для установки видимого состояния
+* Устанавливаем статус `modularTwig()` в зависимости от того, начинается ли имя папки с `_` или нет
+
* Запускаем событие **onPageProcessed**
+* Если в `папке` найдены потомки `recurse()`
+* Запускаем событие **onFolderProcessed**
+* Вызываем `buildRoutes()`
+* Инициализируем `taxonomy` для всех страниц
+* Строим таблицу маршрутов (`route`) для быстрого поиска
+
    * Запускаем событие **onPagesInitialized** с [pages]
+    * Запускаем событие **onPageInitialized** с [page]
+    * Если страница не маршрутизируется:
+        * Запускаем событие **onPageNotFound** с [page]
+    * Если _task_:
+        * Запускаем событие **onPageTask** с [task, page]
+        * Запускаем событие **onPageTask.[TASK]** с [task, page]
+    * Если _action_:
+        * Запускаем событие **onPageAction** с [action, page]
+        * Запускаем событие **onPageAction.[ACTION]** с [action, page]
+10. Запускаем обработчик Debugger Assets
+    * Только для панели отладки: Добавляем отладчик CSS/JS в активы
+11. Запускаем обработчик Render
+    * Инициализируем `$grav['output']`
+    * Если `output` является объектом класса `ResponseInterface`:
+        * Останавливаем дальнейшую обработку и выводим ответ
+    * Иначе:
+        * Визуализируем страницу с помощью метода Twig `processSite()`
+

Twig.php

* Запускаем событие **onTwigSiteVariables**
+* Получаем вывод страницы
+* Запускаем событие **onTwigPageVariables**, в том числе для каждой модульной подстраницы
+* Если страница не найдена или не маршрутизируется, сначала запускаем событие **onPageFallBackUrl** чтобы посмотреть, есть ли у нас запасной вариант для медиа-актива, а затем событие **onPageNotFound**, если нет
+* Устанавливаем все переменные Twig в объекте Twig
+* Устанавливаем имя шаблона на основе информации о файле/заголовке/расширении
+* Вызываем метод `render()`
+* Возвращаем результирующий HTML
+
        * Запускаем событие **onOutputGenerated**
+        * Выводим данные в буфер вывода
+        * Запускаем событие **onOutputRendered**
+        * Строим объект _Response_
+        * Останавливаем дальнейшую обработку и выдаем ответ
+12. Запускаем событие **onPageHeaders** для разрешения манипуляций с заголовками страниц
+13. Выводим заголовок и тело HTTP
+14. Подключаем отладчик рендеринга (если включен)
+15. Выключаем
+    * Закрываем сессию
+    * Закрываем соединение с клиентом
+    * Запускаем событие **onShutdown**
+

Каждый раз, когда у страницы вызывается метод content(), происходит следующий жизненный цикл:

Page.php

Если содержимое НЕ кэшировано
1. Запускаем событие **onPageContentRaw**
+2. Обрабатываем страницу в соответствии с настройками Markdown и Twig. Запускаем событие **onMarkdownInitialized**
+3. Запускаем событие **onPageContentProcessed**
+
Запускаем событие **onPageContent**
+
\ No newline at end of file diff --git a/plugins/plugin-basics/index.html b/plugins/plugin-basics/index.html new file mode 100644 index 00000000..575b9975 --- /dev/null +++ b/plugins/plugin-basics/index.html @@ -0,0 +1,3 @@ + Основы плагинов - Документация Grav CMS на русском

Основы плагинов⚓︎

Grav был разработан, чтобы быть простым и сфокусированным, имея дело только со страницами. Идея заключается в том, что Grav сама по себе является супер-бережливой CMS, обеспечивая достаточно функциональности, чтобы поддерживать основы: маршрутизацию, компиляцию Markdown в HTML, шаблонизацию Twig и кэширование.

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

Мощь!⚓︎

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

Плагины оказались настолько простыми в написании, а также настолько гибкими и мощными, что мы не можем перестать их создавать! У нас уже есть более 370 свободно загружаемых плагинов, которые делают всё от отображения sitemap, предоставления хлебных крошек, отображения архива блога, простого поиска, до предоставления полнофункциональной корзины покупок на JavaScript!

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

Основы⚓︎

Все плагины находятся в вашей папке user/plugins. С базовой установкой Grav есть только два плагина: error и problems.

Плагин error используется для обработки HTTP-ошибок, таких как 404 — страница не найдена.

Плагин problems полезен для новых установок Grav, потому что он обнаруживает любые проблемы с настройкой хостинга, отсутствующими папками или разрешениями, которые могут вызвать проблемы с Grav. Только плагин error действительно необходим для правильной работы.

Каждый плагин в папке user/plugins должен иметь уникальное имя, и это имя должно точно определять функцию плагина. Пожалуйста, не используйте пробелы, подчеркивания или заглавные буквы в названии плагина.

Доступ к значениям конфигурации плагина через Twig⚓︎

Чтобы получить доступ к настройкам конфигурации плагина через Twig (т. е. в рамках темы), используется запись:

{{ config.plugins.pluginname.pluginproperty }}
+

Если имя плагина содержит тире, вы должны обращаться к его свойствам так:

{{ config.plugins['plugin-name'].pluginproperty }}
+

Использование Flex в плагинах⚓︎

Рекомендуемый способ начать использовать Flex в плагине — использовать инструменты разработчика и создать плагин с базовой поддержкой Flex, сгенерированной для вас.

См. раздел Использование Flex в плагинах

\ No newline at end of file diff --git a/plugins/plugin-flex/admin_menu_book.png b/plugins/plugin-flex/admin_menu_book.png new file mode 100644 index 00000000..222669d1 Binary files /dev/null and b/plugins/plugin-flex/admin_menu_book.png differ diff --git a/plugins/plugin-flex/book_edit.png b/plugins/plugin-flex/book_edit.png new file mode 100644 index 00000000..1c0898ad Binary files /dev/null and b/plugins/plugin-flex/book_edit.png differ diff --git a/plugins/plugin-flex/index.html b/plugins/plugin-flex/index.html new file mode 100644 index 00000000..c267ff97 --- /dev/null +++ b/plugins/plugin-flex/index.html @@ -0,0 +1,223 @@ + Использование Flex в плагинах - Документация Grav CMS на русском

Использование Flex в плагинах⚓︎

Введение⚓︎

Использование Flex, будь то в Twig или в PHP-коде, будет рассмотрено только в рамках данного введения. Чтобы понять всю мощь и гибкость Flex, ознакомьтесь с нашей специальной документацией по Flex.

Flex позволяет создавать собственные объекты CRUDS, как отдельные объекты, так и коллекции, и предоставляет обширные API, которые можно использовать из кода плагина или шаблонов.

Пользовательский интерфейс администратора можно легко добавить, используя как стандартные шаблоны, так и собственные настроенные листинги или формы (или что-то ещё).

Требования⚓︎

Требуется Grav 1.7 или более поздняя версия. Для целей этой документации мы будем использовать установку grav+admin. Убедитесь, что она у вас установлена и запущена, чтобы выполнить следующие шаги. Чтобы подготовить её, обратитесь к документации по установке.

Создание ваших плагинов⚓︎

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

Для этого мы воспользуемся командной строкой devtools:

bin/gpm install devtools
+

Чтобы создать новый плагин с помощью devtools, используется следующая команда, имя плагина — myflexplugin:

grav-admin bin/plugin devtools new-plugin
+

Заполните вопросы, используя следующие ответы, главное — выбрать плагин, подготовленный для Flex:

Enter Plugin Name:
+
+> myflexplugin
+
+Enter Plugin Description:
+
+> A little Flex plugin test
+
+Enter Developer Name:
+
+> grav@example.com
+
+Enter GitHub ID (can be blank):
+
+> gravcms
+
+Enter Developer Email:
+
+> grav@example.com
+
+Please choose an option:
+[blank] Basic Plugin
+[flex ] Basic Plugin prepared for custom Flex Objects
+
+> flex
+
+Enter Flex Object Name:
+
+> book
+
+Please choose a storage type:
+[simple] Basic Storage (1 file for all objects) - no media support
+[file ] File Storage (1 file per object)
+[folder] Folder Storage (1 folder per object)
+
+> folder
+
+SUCCESS plugin myflexplugin -> Created Successfully
+
+Path: /home/pierre/project/grav/grav-admin/user/plugins/myflexplugin
+
+Please run `cd /home/pierre/project/grav/grav-admin/user/plugins/myflexplugin` and `composer update` to initialize the autoloader
+

В случае успеха нам нужно установить зависимости, если таковые имеются, для нашего нового плагина:

cd /home/pierre/project/grav/grav-admin/user/plugins/myflexplugin
+
composer update
+

В случае успеха на экране должно появиться следующее сообщение:

Loading composer repositories with package information
+Updating dependencies
+Nothing to modify in lock file
+Writing lock file
+Installing dependencies from lock file (including require-dev)
+Nothing to install, update or remove
+Generating autoload files
+No installed packages - skipping audit.
+

затем вернитесь в корневую папку установки grav-admin:

cd -
+

Скрипт devtools сгенерировал очень простой объект Flex, состоящий из имени и описания, и его коллекцию. Пользовательский интерфейс администратора уже позволяет перечислять эти объекты, создавать, редактировать или удалять их, не написав ни строчки кода.

В левом боковом меню появился новый пункт:

Admin book flex menu entry

Форма редактирования по умолчанию выглядит так:

Simple form edit

Вы также должны увидеть различные папки и файлы, связанные с вашим плагином и его Flex-объектом book.

Что сделано⚓︎

Папка с плагином должна выглядеть следующим образом:

../grav-admin/user/plugins/myflexplugin
+├── CHANGELOG.md
+├── LICENSE
+├── README.md
+├── blueprints
+│   └── flex-objects
+│   └── book.yaml
+├── blueprints.yaml
+├── classes
+│   └── Flex
+│   └── Types
+│   └── Book
+│   ├── BookCollection.php
+│   └── BookObject.php
+├── composer.json
+├── composer.lock
+├── languages.yaml
+├── myflexplugin.php
+├── myflexplugin.yaml
+└── vendor
+├── autoload.php
+└── composer
+├── ClassLoader.php
+├── InstalledVersions.php
+├── LICENSE
+├── autoload_classmap.php
+├── autoload_namespaces.php
+├── autoload_psr4.php
+├── autoload_real.php
+├── autoload_static.php
+├── installed.json
+├── installed.php
+└── platform_check.php
+

Определение объекта Flex⚓︎

Ключевым файлом является определение чертежа. Здесь будет определена схема этого Flex-объекта, а также множество опций, позволяющих настроить практически все его параметры.

В нашем плагине чертежи книг можно найти в user/plugins/myflexplugin/blueprints/flex-objects/book.yaml.

ВАЖНО Чертёж для каждого Flex-объекта в вашем плагине (или в основной установке /blueprints) должен находиться в папке blueprints/flex-objects/, иначе они не будут найдены.

Схема определяется в разделе Form этого чертежа. Независимо от того, будут ли использоваться формы пользовательского интерфейса администратора, в этом разделе определяются свойства этого Flex-объекта.

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

В приведённой ниже схеме определены эти два свойства:

form:
+  validation: loose
+  fields:
+    published:
+      type: toggle
+      label: Published
+      highlight: 1
+      default: 1
+      options:
+        1: PLUGIN_ADMIN.YES
+        0: PLUGIN_ADMIN.NO
+      validate:
+        type: bool
+        required: true
+    name:
+      type: text
+      label: Name
+      validate:
+        required: true
+    description:
+      type: text
+      label: Description
+      validate:
+        required: true
+

Хуки плагина⚓︎

myflexplugin.php — это обычное определение ядра для реализации плагинов, хуков и т. д.

Эти детали необходимы для включения Flex:

<?php
+
+public $features = [
+'blueprints' => 0,
+];
+
+    /**
+     * @return array
+     *
+     * The getSubscribedEvents() gives the core a list of events
+     *     that the plugin wants to listen to. The key of each
+     *     array section is the event that the plugin listens to
+     *     and the value (in the form of an array) contains the
+     *     callable (or function) as well as the priority. The
+     *     higher the number the higher the priority.
+     */
+    public static function getSubscribedEvents(): array
+    {
+        return [
+            'onPluginsInitialized' => [
+                // Uncomment following line when plugin requires Grav < 1.7
+                // ['autoload', 100000],
+                ['onPluginsInitialized', 0]
+            ],
+            FlexRegisterEvent::class       => [['onRegisterFlex', 0]],
+        ];
+    }
+

Остальные файлы являются стандартными и хорошо описаны в предыдущих разделах документации плагинов. Мы не будем рассматривать их здесь.

Папка classes содержит классы, используемые для Flex-объекта book и Flex-коллекции book. Это классы, в которые можно добавить пользовательские методы, которые будут доступны для каждого объекта или экземпляра коллекции. См. раздел Добавление пользовательского метода к объекту Flex.

Изменение схемы объектов Flex⚓︎

Давайте добавим в наш объект поле, скажем, поле datetime, представляющее дату публикации этой книги, это можно сделать, просто добавив поля pub_date в чертежи:

form:
+  validation: loose
+  fields:
+    published:
+      type: toggle
+      label: Published
+      highlight: 1
+      default: 1
+      options:
+        1: PLUGIN_ADMIN.YES
+        0: PLUGIN_ADMIN.NO
+      validate:
+        type: bool
+        required: true
+    name:
+      type: text
+      label: Name
+      validate:
+        required: true
+    pub_date:
+      type: datetime
+      label: Description
+      validate:
+        required: true
+

В форме редактирования по умолчанию теперь отображаются поля ввода даты публикации:

Simple form edit

Список всех доступных типов полей можно найти здесь

Добавление пользовательского метода к объекту Flex⚓︎

Текущий Flex-объект book, user/plugins/myflexplugin/classes/Flex/Types/Book/BookObject.php, реализует только GenericObject (с помощью трейтов):

<?php
+
+declare(strict_types=1);
+
+/**
+ * @package    Grav\Common\Flex
+ *
+ * @copyright  Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
+ * @license    MIT License; see LICENSE file for details.
+ */
+
+namespace Grav\Plugin\Myflexplugin\Flex\Types\Book;
+
+use Grav\Common\Flex\Types\Generic\GenericObject;
+
+/**
+ * Class BookObject
+ * @package Grav\Common\Flex\Generic
+ *
+ * @extends FlexObject<string,GenericObject>
+*/
+class BookObject extends GenericObject
+{
+
+}
+

Добавим метод для получения краткого содержания книги, используя разделитель для краткого содержания:

<?php
+
+declare(strict_types=1);
+
+/**
+ * @package    Grav\Common\Flex
+ *
+ * @copyright  Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.
+ * @license    MIT License; see LICENSE file for details.
+ */
+
+namespace Grav\Plugin\Myflexplugin\Flex\Types\Book;
+
+use Grav\Common\Flex\Types\Generic\GenericObject;
+
+/**
+ * Class BookObject
+ * @package Grav\Common\Flex\Generic
+ *
+ * @extends FlexObject<string,GenericObject>
+*/
+class BookObject extends GenericObject
+{
+    public function getSummary() {
+        $delimiter = \Grav\Common\Grav::instance()['config']['site']['summary']['delimiter'] ?? '===';
+        $summary = explode($delimiter, $this->content);
+        return $summary[0] ?? '';
+    }
+}
+

Теперь мы можем вызвать этот метод в любом месте, где используется Flex-объект book, например, в шаблоне:

{% set books = grav.get('flex').collection('book') %}
+{% for book in books  %}
+<h1>{{ book.header.title}}</h1>
+<p>{{ book.getSummary()}}</p>
+{% endfor %}
+

Метод ::getSummary можно использовать и в любом PHP-коде.

То же самое можно сделать в классе коллекции user/plugins/myflexplugin/classes/Flex/Types/Book/BookCollection.php. Например, добавить дружественный метод поиска по нетривиальным запросам. Действительно, коллекция уже предоставляет все обычные методы коллекций. Если у объекта много различных полей, то стандартные методы сбора могут привести к ошибкам.

\ No newline at end of file diff --git a/plugins/plugin-flex/pub_date_added.png b/plugins/plugin-flex/pub_date_added.png new file mode 100644 index 00000000..7a8727d4 Binary files /dev/null and b/plugins/plugin-flex/pub_date_added.png differ diff --git a/plugins/plugin-install/index.html b/plugins/plugin-install/index.html new file mode 100644 index 00000000..cfeb753e --- /dev/null +++ b/plugins/plugin-install/index.html @@ -0,0 +1,2 @@ + Установка плагинов - Документация Grav CMS на русском

Установка плагинов⚓︎

Установка⚓︎

Установить любой плагин можно одним из трех способов:

  • Через GPM (менеджер пакетов Grav), введя простую команду в терминале.
  • Вручную, распаковав архив с плагином в определенную директорию.
  • Через плагин админки.

На каждом из следующих этапов вам потребуется знать имя плагина NAME.

Установка через GPM (рекомендуемый способ)⚓︎

Чтобы установить плагин через GPM, откройте командную строку, перейдите в корень вашего сайта и введите:

bin/gpm install NAME
+

Это установит плагин в директорию /user/plugins. Файлы плагина можно будет найти в user/plugins/NAME.

Ручная установка⚓︎

Чтобы установить плагин вручную, скачайте zip-версию этого репозитория и разархивируйте её в user/plugins/. Затем переименуйте папку плагина в NAME.

Теперь все файлы плагина должны находиться в директории user/plugins/NAME.

Этот плагин представляет собой модульный компонент для Grav, для работы которого могут потребоваться другие плагины. Подробнее см. файл user/plugins/NAME/blueprints.yaml.

Плагин админки⚓︎

При использовании плагина админки можно установить любой плагин (если он зарегистрирован в репозитории Grav) в разделе Плагины, нажав на кнопку Добавить.

\ No newline at end of file diff --git a/plugins/plugin-tutorial/index.html b/plugins/plugin-tutorial/index.html new file mode 100644 index 00000000..d6799cbb --- /dev/null +++ b/plugins/plugin-tutorial/index.html @@ -0,0 +1,212 @@ + Создание плагинов - Документация Grav CMS на русском

Создание плагинов⚓︎

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

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

Поскольку уже существует подключаемый модуль, выполняющий эту работу с именем Random, мы назовем этот тестовый модуль Randomizer.

Эта функция недоступна из коробки, но легко предоставляется через плагин. Как и в случае со многими аспектами Grav, для этого не существует единого пути. Вместо этого у вас есть много вариантов. Мы рассмотрим только один подход...

Обзор плагина Randomizer⚓︎

Для нашего плагина мы воспользуемся следующим подходом:

  1. Активируем плагин, если URI соответствует настроенному нами триггерному маршруту. (Например, /random)

  2. Создадим фильтр, чтобы в пул случайных страниц попадали только настроенные таксономии. (Например, category: blog)

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

ХОРОШО! Звучит достаточно просто, правда? Итак, приступим!

Шаг 1 - Установка плагина DevTools⚓︎

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

Первый шаг в создании нового плагина — это установить плагин DevTools. Это можно сделать двумя способами.

Установка через CLI GPM⚓︎

  • Перейдите в командной строке к корню вашей установки Grav
bin/gpm install devtools
+

Установка через плагин админки⚓︎

  • После входа в систему просто перейдите в раздел Плагины на боковой панели.
  • Нажмите кнопку Добавить в правом верхнем углу.
  • Найдите DevTools в списке и нажмите кнопку Установить.

Шаг 2 - Создание плагина Randomizer⚓︎

Для этого следующего шага вам действительно нужно находиться в командной строке, поскольку DevTools предоставляет несколько команд CLI, чтобы значительно упростить процесс создания нового плагина!

В корне вашей установки Grav введите следующую команду:

bin/plugin devtools new-plugin
+

Этот процесс задаст вам несколько вопросов, которые необходимы для создания нового плагина:

bin/plugin devtools new-plugin
+Enter Plugin Name: Randomizer
+Enter Plugin Description: Sends the user to a random page
+Enter Developer Name: Acme Corp
+Enter Developer Email: contact@acme.co
+
+SUCCESS plugin Randomizer -> Created Successfully
+
+Path: /www/user/plugins/randomizer
+
+Make sure to run `composer update` to initialize the autoloader
+

На этом этапе вам нужно запустить composer update во вновь созданной папке плагина.

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

Шаг 3 - Основы плагина⚓︎

Теперь мы создали новый плагин, который можно изменять и развивать. Давайте разберемся и посмотрим, из чего состоит плагин. Если вы заглянете в папку user/plugins/randomizer, вы увидите:

.
+├── CHANGELOG.md
+├── LICENSE
+├── README.md
+├── blueprints.yaml
+├── randomizer.php
+└── randomizer.yaml
+

Это примерная структура, но необходимы некоторые вещи:

Необходимые элементы для работы⚓︎

Эти элементы очень важны, и ваш плагин не будет работать надежно, если вы не включите их в свой плагин.

  • blueprints.yaml - файл конфигурации, используемый Grav для получения информации о вашем плагине. Он также может определять форму, которую администратор может отображать при просмотре сведений о плагине. Эта форма позволит вам сохранить настройки плагина. Этот файл задокументирован в главе «Формы».
  • randomizer.php - этот файл будет называться в соответствии с вашим плагином, но может использоваться для размещения любой логики, необходимой вашему плагину. Вы можете использовать любой перехват событий плагина для выполнения логики практически в любой точке жизненного цикла Grav.
  • randomizer.yaml - это конфигурация, используемая плагином для установки параметров, которые плагин может использовать. Он должен называться так же, как и файл .php.

Необходимые элементы для выпуска⚓︎

Эти элементы необходимы, если вы хотите выпустить свой плагин через GPM.

  • CHANGELOG.md - Файл, соответствующий формату журнала изменений Grav для отображения изменений в выпусках.
  • LICENSE - файл лицензии, вероятно, должен быть MIT, если у вас нет особой потребности в чем-то еще.
  • README.md - "Readme", который должен содержать любую документацию для плагина. Как установить, настроить и использовать.

Шаг 4 - Настройка плагина⚓︎

Как мы описали в Обзоре плагина, нам нужно иметь несколько параметров конфигурации для нашего плагина, поэтому файл randomizer.yaml должен выглядеть примерно так:

enabled: true
+active: true
+route: /random
+filters:
+    category: blog
+

Это позволяет нам иметь несколько фильтров, если мы хотим, но пока мы просто хотим, чтобы весь контент с таксономией category: blog имел право на случайный выбор.

Все плагины должны иметь опцию «включен». Если в конфигурации всего сайта установлено значение false, ваш плагин никогда не будет инициализирован Grav. Все плагины также имеют опцию active. Если это false во всем сайте конфигурации, каждая страница должна будет активировать ваш плагин. Обратите внимание, что несколько плагинов также поддерживают enabled/active в обложку страницы с помощью mergeConfig, подробно описанного ниже.

При установке Grav по умолчанию таксономия определена для category и tag по умолчанию. Эту конфигурацию можно изменить в вашем файле user/config/site.yaml.

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

Шаг 5 - Базовая структура плагина⚓︎

Структура базового класса плагина уже будет выглядеть примерно так:

<?php
+
+namespace Grav\Plugin;
+
+use Composer\Autoload\ClassLoader;
+use Grav\Common\Plugin;
+use RocketTheme\Toolbox\Event\Event;
+
+/**
+ * Class RandomizerPlugin
+ * @package Grav\Plugin
+ */
+class RandomizerPlugin extends Plugin
+{
+    /**
+     * Composer autoload.
+     *
+     * @return ClassLoader
+     */
+    public function autoload(): ClassLoader
+    {
+        return require __DIR__ . '/vendor/autoload.php';
+    }
+}
+

Нам нужно добавить несколько операторов use, потому что мы собираемся использовать эти классы в нашем плагине, и это экономит место и делает код более читабельным, если нам не нужно помещать полное пространство имен для каждого класса в строку.

Измените операторы use, чтобы они выглядели так:

<?php
+
+use Composer\Autoload\ClassLoader;
+use Grav\Common\Plugin;
+use Grav\Common\Page\Collection;
+use Grav\Common\Uri;
+use Grav\Common\Taxonomy;
+

Двумя ключевыми частями этой структуры классов являются:

  1. Плагины должны иметь namespace Grav\Plugin в верхней части PHP-файла.
  2. Плагины должны быть названы в CamelCase на основе имени плагина со строкой Plugin, добавленной в конец, и должен расширять Plugin, отсюда и название класса RandomizerPlugin.

Шаг 6 - События с подпиской⚓︎

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

<?php
+
+public static function getSubscribedEvents(): array
+{
+    return [
+        'onPluginsInitialized' => [
+            ['autoload', 100000], // TODO: Remove when plugin requires Grav >=1.7
+            ['onPluginsInitialized', 0]
+        ]
+    ];
+}
+

В этом плагине мы собираемся сообщить Grav, что мы подписываемся на событие onPluginsInitialized. Таким образом, мы можем использовать это событие (которое является первым событием, доступным для плагинов), чтобы определить, следует ли нам подписываться на другие события.

Первый прослушиватель событий autoload нужен только в Grav 1.6. Grav 1.7 автоматически вызывает этот метод.

Шаг 7 - Определение необходимости запуска плагина⚓︎

Следующим шагом является добавление метода в наш класс RandomizerPlugin для обработки события onPluginsInitialized, поэтому он активируется только тогда, когда пользователь пытается перейти к маршруту, который мы настроили в нашем файле randomizer.yaml. Замените текущую логику плагина 'Example' на следующую:

<?php
+
+public function onPluginsInitialized(): void
+{
+    // Don't proceed if we are in the admin plugin
+    if ($this->isAdmin()) {
+        return;
+    }
+
+    /** @var Uri $uri */
+    $uri = $this->grav['uri'];
+    $config = $this->config();
+
+    $route = $config['route'] ?? null;
+    if ($route && $route == $uri->path()) {
+        $this->enable([
+            'onPageInitialized' => ['onPageInitialized', 0]
+        ]);
+    }
+}
+

Во-первых, мы получаем объект Uri из контейнера инъекции зависимостей. Он содержит всю информацию о текущем URI, включая информацию о маршруте.

Объект config уже является частью базового Plugin, поэтому мы можем просто использовать его, чтобы получить значение конфигурации для нашего настроенного route.

Затем мы сравниваем настроенный маршрут с текущим путем URI. Если они равны, мы сообщаем диспетчеру, что наш плагин также будет прослушивать новое событие: onPageInitialized.

Используя этот подход, мы гарантируем, что не будем запускать какой-либо дополнительный код, если в этом нет необходимости. Практика, подобная этой, гарантирует, что ваш сайт будет работать как можно быстрее.

Шаг 8 — Отображение случайной страницы⚓︎

Последним шагом нашего плагина является отображение случайной страницы, и мы можем сделать это, добавив следующий метод:

<?php
+
+/**
+ * Send user to a random page
+ */
+public function onPageInitialized(): void
+{
+    /** @var Taxonomy $uri */
+    $taxonomy_map = $this->grav['taxonomy'];
+    $config = $this->config();
+
+    $filters = (array)($config['filters'] ?? []);
+    $operator = $config['filter_combinator'] ?? 'and';
+
+    if (count($filters) > 0) {
+        $collection = new Collection();
+        $collection->append($taxonomy_map->findTaxonomy($filters, $operator)->toArray());
+        if (count($collection) > 0) {
+            unset($this->grav['page']);
+            $this->grav['page'] = $collection->random()->current();
+        }
+    }
+}
+

Этот метод немного сложнее, поэтому мы перейдем к тому, что происходит:

  1. Во-первых, мы получаем объект Taxonomy из контейнера Grav DI и присваиваем его переменной $taxonomy_map.

  2. Затем мы извлекаем массив фильтров из нашей конфигурации плагина. В нашей конфигурации это массив с 1 элементом: ['category'=>'blog'].

  3. Убедитесь, что у нас есть фильтры, а затем создайте новую коллекцию в переменной $collection для хранения наших страниц.

  4. Добавьте все страницы, соответствующие фильтру, в нашу переменную $collection.

  5. Снимите значение текущего объекта page, о котором знает Grav.

  6. Установите текущую page на случайный элемент в коллекции.

Шаг 9 - Очистка⚓︎

Пример плагина, созданного с помощью плагина DevTools, использовал событие под названием `onPageContentRaw()'. Это событие не используется в нашем новом плагине, поэтому мы можем безопасно удалить всю функцию.

Шаг 10 - Итог⚓︎

И это все, что в нем есть! Теперь плагин завершен. Полный класс плагина должен выглядеть примерно так:

<?php
+
+namespace Grav\Plugin;
+
+use Composer\Autoload\ClassLoader;
+use Grav\Common\Plugin;
+use Grav\Common\Page\Collection;
+use Grav\Common\Uri;
+use Grav\Common\Taxonomy;
+
+/**
+ * Class RandomizerPlugin
+ * @package Grav\Plugin
+ */
+class RandomizerPlugin extends Plugin
+{
+    /**
+     * @return array
+     *
+     * The getSubscribedEvents() gives the core a list of events
+     *     that the plugin wants to listen to. The key of each
+     *     array section is the event that the plugin listens to
+     *     and the value (in the form of an array) contains the
+     *     callable (or function) as well as the priority. The
+     *     higher the number the higher the priority.
+     */
+    public static function getSubscribedEvents(): array
+    {
+    return [
+        'onPluginsInitialized' => [
+            ['autoload', 100000], // TODO: Remove when plugin requires Grav >=1.7
+            ['onPluginsInitialized', 0]
+        ]
+    ];
+    }
+
+    /**
+     * Composer autoload.
+     *
+     * @return ClassLoader
+     */
+    public function autoload(): ClassLoader
+    {
+        return require __DIR__ . '/vendor/autoload.php';
+    }
+
+    public function onPluginsInitialized(): void
+    {
+        // Don't proceed if we are in the admin plugin
+        if ($this->isAdmin()) {
+            return;
+        }
+
+        /** @var Uri $uri */
+        $uri = $this->grav['uri'];
+        $config = $this->config();
+
+        $route = $config['route'] ?? null;
+        if ($route && $route == $uri->path()) {
+            $this->enable([
+                'onPageInitialized' => ['onPageInitialized', 0]
+            ]);
+        }
+    }
+
+    /**
+     * Send user to a random page
+     */
+    public function onPageInitialized(): void
+    {
+        /** @var Taxonomy $uri */
+        $taxonomy_map = $this->grav['taxonomy'];
+        $config = $this->config();
+
+        $filters = (array)($config['filters'] ?? []);
+        $operator = $config['filter_combinator'] ?? 'and';
+
+        if (count($filters) > 0) {
+            $collection = new Collection();
+            $collection->append($taxonomy_map->findTaxonomy($filters, $operator)->toArray());
+            if (count($collection) > 0) {
+                unset($this->grav['page']);
+                $this->grav['page'] = $collection->random()->current();
+            }
+        }
+    }
+}
+

Если вы последуете этому примеру, у вас должен быть полнофункциональный плагин Randomizer, включенный для вашего сайта. Просто укажите ваш браузер на https://yoursite.com/random, и вы должны увидеть случайную страницу. Вы также можете загрузить оригинальный плагин Random прямо с сайта getgrav.org.

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

Одной из популярных методик, которая используется в различных плагинах, является концепция объединения конфигурации плагина (либо по умолчанию, либо переопределенной конфигурации пользователя) с конфигурацией на уровне страниц. Это означает, что вы можете установить конфигурацию site-wide, а затем иметь определенную конфигурацию для данной страницы по мере необходимости. Это обеспечивает много мощности и гибкости для вашего плагина.

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

<?php
+
+public function onPageContentProcessed(Event $event)
+{
+    $page = $event['page'];
+    $config = $this->mergeConfig($page);
+
+    if ($config->get('process_content')) {
+        $page->setRawContent(\Michelf\SmartyPants::defaultTransform(
+            $page->getRawContent(),
+            $config->get('options')
+        ));
+    }
+}
+

Реализация CLI в вашем плагине⚓︎

Плагины также имеют возможность интеграции с командной строкой bin/plugin для выполнения задач. Вы можете следовать расширенному руководству, если хотите реализовать такую ​​функциональность.

\ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..8daf0086 --- /dev/null +++ b/robots.txt @@ -0,0 +1,3 @@ +User-agent: * + +Sitemap: https://grav-docs.ru/sitemap.xml \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 00000000..b82aa858 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en","ru"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":""},{"location":"#vvedenie","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":"

\u0412\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d\u043d\u0430\u044f \u0438 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Grav CMS. \u0420\u0430\u0437 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439.

\u0426\u0435\u043b\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e Grav CMS.

"},{"location":"admin-panel/accounts/configuration/","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":""},{"location":"admin-panel/accounts/configuration/#nastroika","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f onAdminSave \u0438 onAdminSaveAfter \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u043c. \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041e\u0431\u044a\u0435\u043a\u0442\u044b Flex.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0437\u0430 \u0441\u0447\u0451\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0421\u0440\u043e\u043a \u0441\u043b\u0443\u0436\u0431\u044b \u043a\u044d\u0448\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.. \u0421\u0440\u043e\u043a \u0441\u043b\u0443\u0436\u0431\u044b \u043a\u044d\u0448\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043b\u044f \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e HTML. \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u0421\u0440\u043e\u043a \u0441\u043b\u0443\u0436\u0431\u044b \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445.

\u0415\u0441\u043b\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 HTML-\u043a\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043a\u044d\u0448 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e {% do block.disableCache() %}.

"},{"location":"admin-panel/accounts/groups/","title":"\u0413\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439","text":""},{"location":"admin-panel/accounts/groups/#gruppy-polzovatelei","title":"\u0413\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439","text":"

\u0413\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u043e\u0431\u0449\u0438\u0435 \u0440\u043e\u043b\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u043e\u043b\u044f\u043c\u0438 \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.

\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0435\u0451 \u0443\u0447\u0451\u0442\u043d\u044b\u043c \u0437\u0430\u043f\u0438\u0441\u044f\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u00ab\u0414\u043e\u0441\u0442\u0443\u043f\u00bb.

"},{"location":"admin-panel/accounts/groups/#gruppa-polzovatelei","title":"\u0413\u0440\u0443\u043f\u043f\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439","text":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0418\u043c\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u2014 \u044d\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0433\u0440\u0443\u043f\u043f\u044b. \u0415\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0438\u043c\u044f \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0438\u043c\u044f \u2014 \u044d\u0442\u043e \u0432\u0438\u0434\u0438\u043c\u043e\u0435 \u0438\u043c\u044f \u0433\u0440\u0443\u043f\u043f\u044b. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0418\u043a\u043e\u043d\u043a\u0430 Enabled \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0414\u0430, \u0433\u0440\u0443\u043f\u043f\u0430 \u0431\u044b\u043b\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435. \u0415\u0441\u043b\u0438 \u041d\u0435\u0442, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u043e\u0439, \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435. \u0421\u043c. \u043d\u0438\u0436\u0435."},{"location":"admin-panel/accounts/groups/#razresheniia","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f","text":"

\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0438 \u0447\u0442\u043e \u043e\u043d \u0441\u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

\u0412\u043e\u0442 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043a\u043e\u043c\u0443-\u043b\u0438\u0431\u043e \u0434\u0435\u043b\u0430\u0442\u044c.

"},{"location":"admin-panel/accounts/groups/#sait","title":"\u0421\u0430\u0439\u0442","text":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0412\u0445\u043e\u0434 \u043d\u0430 \u0441\u0430\u0439\u0442 site.login \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435."},{"location":"admin-panel/accounts/groups/#adminka","title":"\u0410\u0434\u043c\u0438\u043d\u043a\u0430","text":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0412\u0445\u043e\u0434 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0443 admin.login \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0430 \u0414\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0433 \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0421\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c admin.super \u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u0443\u043f\u0435\u0440\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u0435\u0442 \u0435\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430.. \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043a\u044d\u0448\u0430 admin.cache \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043d\u043e\u043f\u043a\u0430\u043c \u0441\u0431\u0440\u043e\u0441\u0430 \u043a\u044d\u0448\u0430. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 admin.configuration \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b admin.configuration.system \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u0430\u0439\u0442\u0430 admin.configuration.site \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0421\u0430\u0439\u0442 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 admin.configuration.media \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u041c\u0435\u0434\u0438\u0430 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0435 admin.configuration.info \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 admin.configuration.pages \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0439\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c\u0438 admin.configuration.accounts \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0439\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0410\u043a\u043a\u0430\u0443\u043d\u0442\u044b. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b admin.pages \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u0430 admin.maintenance \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0441\u0430\u0439\u0442\u0430 admin.statistics \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u041f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 admin.plugins \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041f\u043b\u0430\u0433\u0438\u043d\u044b. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u0430\u043c\u0438 admin.themes \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0422\u0435\u043c\u044b. \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 admin.tools \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u0410\u043a\u043a\u0430\u0443\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 admin.accounts \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438."},{"location":"admin-panel/accounts/permissions/","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f","text":""},{"location":"admin-panel/accounts/permissions/#razresheniia","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f","text":"

\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0439 \u0441 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 admin.configuration \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 admin.configuration.accounts \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0410\u043a\u043a\u0430\u0443\u043d\u0442\u044b. \u0410\u043a\u043a\u0430\u0443\u043d\u0442\u044b admin.accounts \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0410\u043a\u043a\u0430\u0443\u043d\u0442\u044b. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 admin.accounts.create \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u0438 \u0433\u0440\u0443\u043f\u043f. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 admin.accounts.read \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u0438 \u0433\u0440\u0443\u043f\u043f. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 admin.accounts.update \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u0438 \u0433\u0440\u0443\u043f\u043f. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 admin.accounts.delete \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u0438 \u0433\u0440\u0443\u043f\u043f. \u0421\u043f\u0438\u0441\u043e\u043a admin.accounts.list \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0410\u043a\u043a\u0430\u0443\u043d\u0442\u044b.

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e true \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0417\u0430\u043f\u0440\u0435\u0442. \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e false \u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. \u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0435 \u0417\u0430\u043f\u0440\u0435\u0442. \u041d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e null \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u0417\u0430\u043f\u0440\u0435\u0442, \u0435\u0441\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f.

\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043d\u0430\u0434 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0433\u0440\u0443\u043f\u043f\u044b. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0437\u0430\u0434\u0430\u043d\u043e \u0432 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u0430\u044f-\u043b\u0438\u0431\u043e \u0438\u0437 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0430 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u0430\u044f-\u043b\u0438\u0431\u043e \u0438\u0437 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e.

"},{"location":"admin-panel/accounts/users/","title":"\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438","text":""},{"location":"admin-panel/accounts/users/#uchetnye-zapisi","title":"\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438","text":""},{"location":"admin-panel/accounts/users/#profil-polzovatelia","title":"\u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","text":"

\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f. \u0417\u0434\u0435\u0441\u044c \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u0430\u0448 \u0430\u0432\u0430\u0442\u0430\u0440, \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u0438\u043c\u044f, \u044f\u0437\u044b\u043a \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u0438 \u0443\u0440\u043e\u0432\u043d\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.

\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0432\u044b \u0432\u043e\u0448\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u044e, \u0432\u044b\u0431\u0440\u0430\u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u0432\u0430\u0442\u0430\u0440\u0430 \u0438 \u0438\u043c\u0435\u043d\u0435\u043c. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u0432\u0430\u0441 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u044e.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043c\u043e\u0433\u0443\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 admin/user/example \u043a URL-\u0430\u0434\u0440\u0435\u0441\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 example \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0438/\u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.

"},{"location":"admin-panel/accounts/users/#vkladka-obshchie","title":"\u0412\u043a\u043b\u0430\u0434\u043a\u0430 \u00ab\u041e\u0431\u0449\u0438\u0435\u00bb","text":""},{"location":"admin-panel/accounts/users/#avatar","title":"\u0410\u0432\u0430\u0442\u0430\u0440","text":"

\u0412 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041f\u0440\u043e\u0444\u0438\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0441\u0442\u0438\u043b\u044c\u043d\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0439 \u0430\u0432\u0430\u0442\u0430\u0440, \u0438\u043c\u044f \u0438 \u0442\u0438\u0442\u0443\u043b. \u0412\u0430\u0448 \u0430\u0432\u0430\u0442\u0430\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Gravatar, \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b \u0430\u0432\u0430\u0442\u0430\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u0438 \u200b\u200b\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432 Gravatar, \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u044b\u0431\u043e\u0440\u0443, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c, \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0449\u0435\u043b\u043a\u043d\u0443\u0442\u044c \u044d\u0442\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043d\u0430\u0439\u0442\u0438, \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"admin-panel/accounts/users/#akkaunt","title":"\u0410\u043a\u043a\u0430\u0443\u043d\u0442","text":"

\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0423\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0438\u043c\u044f, \u044f\u0437\u044b\u043a \u0438 \u0442. \u0434. \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u0430\u0448\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.

"},{"location":"admin-panel/accounts/users/#2-faktornaia-autentifikatsiia","title":"2-\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f","text":"

2-\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0423\u0437\u043d\u0430\u0439\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c.

"},{"location":"admin-panel/accounts/users/#vkladka-dostupa","title":"\u0412\u043a\u043b\u0430\u0434\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430","text":"

\u042d\u0442\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0432\u0438\u0434\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0413\u0440\u0443\u043f\u043f\u044b \u0421\u043f\u0438\u0441\u043e\u043a \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435. \u0421\u043c. \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f."},{"location":"admin-panel/dashboard/","title":"\u041e\u0431\u0437\u043e\u0440","text":""},{"location":"admin-panel/dashboard/#dashbord","title":"\u0414\u0430\u0448\u0431\u043e\u0440\u0434","text":"

\u0414\u0430\u0448\u0431\u043e\u0440\u0434 \u0441\u043b\u0443\u0436\u0438\u0442 \u0446\u0435\u043d\u0442\u0440\u043e\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0442\u0440\u0430\u0444\u0438\u043a\u0430, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f Grav, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438, \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u043a\u044d\u0448.

\u042d\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430.

\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 access.admin.super \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d, access.admin.main maintenance \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u044d\u0448\u0430, access.admin.pages \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c, access.admin.statistics \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u0430\u0439\u0442\u0430.

"},{"location":"admin-panel/dashboard/#kesh-i-proverka-obnovlenii","title":"\u041a\u044d\u0448 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439","text":"

\u0412 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438. \u041f\u0435\u0440\u0432\u0430\u044f \u0438\u0437 \u043d\u0438\u0445 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u043a\u044d\u0448\u0430 Grav. \u041d\u0430\u0436\u0430\u0442\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0447\u0438\u0441\u0442\u043a\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u044d\u0448\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043a\u044d\u0448 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043f\u0440\u0430\u0432\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043d\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0437\u0434\u0435\u0441\u044c.

\u0412\u0442\u043e\u0440\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0421\u044e\u0434\u0430 \u0432\u0445\u043e\u0434\u044f\u0442 \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0442\u0435\u043c\u044b \u0438 \u0441\u0430\u043c\u0430 CMS. \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 Grav \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.

\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435, \u0438 \u043a\u044d\u0448\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043d\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u0435 \u043a\u044d\u0448 Grav \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.

"},{"location":"admin-panel/dashboard/#obsluzhivanie-i-statistika","title":"\u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430","text":"

\u0420\u0430\u0437\u0434\u0435\u043b\u044b \u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435.

\u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0443\u0437\u043d\u0430\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u0442 \u0438 \u0447\u0430\u0441\u0442\u0435\u0439 Grav \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b.

\u0415\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c. \u042d\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 CMS, \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u00ab\u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u00bb \u0438 \u00ab\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430\u00bb.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e \u200b\u200bGrav, \u043d\u0430\u0436\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443 \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c Grav \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439.

\u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439, \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u0441\u0430\u0439\u0442 \u0431\u044b\u043b \u0431\u0435\u0437 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d zip-\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 backup/ \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 FTP \u0438\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0435\u0431-\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0430\u0448\u0435\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439.

\u0412 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0435 \u0441 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u043e\u0439 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0430\u0439\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u0435\u043d\u044c, \u043d\u0435\u0434\u0435\u043b\u044e \u0438 \u043c\u0435\u0441\u044f\u0446 (30 \u0434\u043d\u0435\u0439). \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0437\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0443\u044e \u043d\u0435\u0434\u0435\u043b\u044e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u043d\u044f\u043c\u0438 \u043d\u0435\u0434\u0435\u043b\u0438.

"},{"location":"admin-panel/dashboard/#poslednie-obnovlennye-stranitsy","title":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0412 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav. \u042d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0412\u044b\u0431\u043e\u0440 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u0432\u0430\u0441 \u043f\u0440\u044f\u043c\u043e \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.

\u041a\u043d\u043e\u043f\u043a\u0430 \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0432\u0430\u0441 \u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"admin-panel/dashboard/configuration-site/","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 (\u0441\u0430\u0439\u0442)","text":""},{"location":"admin-panel/dashboard/configuration-site/#nastroika-sait","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 (\u0441\u0430\u0439\u0442)","text":"

\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0421\u0430\u0439\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0443 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e \u0440\u044f\u0434\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f PHP, SQL, \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 access.admin.super \u0438\u043b\u0438 access.admin.configuration \u0438 access.admin.configuration_site.

\u0412\u043a\u043b\u0430\u0434\u043a\u0430 \u0421\u0430\u0439\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 /user/config/site.yaml. \u042d\u0442\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0438 \u043f\u043e\u043b\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0441\u0430\u0439\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0438\u043c\u044f, \u0430\u0432\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435.

\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0421\u0430\u0439\u0442.

"},{"location":"admin-panel/dashboard/configuration-site/#znacheniia-po-umolchaniiu","title":"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","text":"

\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0430\u0439\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0430\u0439\u0442\u0430 \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0442\u0435\u043c\u0430\u043c\u0438. \u0410\u0432\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0418\u043c\u044f \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0442\u0435\u043c\u0430\u0445 \u0438\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0418\u043c\u0435\u0439\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 \u0442\u0435\u043c\u0430\u0445 \u0438\u043b\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445. \u0422\u0438\u043f\u044b \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u0422\u0438\u043f\u044b \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0437\u0434\u0435\u0441\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445."},{"location":"admin-panel/dashboard/configuration-site/#tizer","title":"\u0422\u0438\u0437\u0435\u0440","text":"

\u0422\u0438\u0437\u0435\u0440 - \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c \u0438 \u0432\u0441\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u0430\u044e\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0434\u043a\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u0441\u0432\u043e\u0434\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b) \u0420\u0430\u0437\u043c\u0435\u0440 \u0442\u0438\u0437\u0435\u0440\u0430 \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0434\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f. \u0424\u043e\u0440\u043c\u0430\u0442 short = \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430; long = \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0442\u0438\u0437\u0435\u0440\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0441\u0432\u043e\u0434\u043a\u0438 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e '==='). \u041e\u0431\u044b\u0447\u043d\u043e \u0432\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0435 \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0442\u0443\u043f\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0431\u0437\u0430\u0446\u0430, \u0430 \u0432\u0441\u0435, \u0447\u0442\u043e \u0434\u043e \u043d\u0435\u0433\u043e, \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0434\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."},{"location":"admin-panel/dashboard/configuration-site/#metadannye","title":"\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435","text":"

\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 - \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043a\u0443\u043b\u0438\u0441\u043d\u043e\u0433\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c SEO, \u0442\u043e, \u043a\u0430\u043a \u0432\u0430\u0448\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0438 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445, \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u0430."},{"location":"admin-panel/dashboard/configuration-site/#perenapravleniia-i-marshruty","title":"\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b","text":"

\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0432\u0441\u0435 \u044d\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435, \u0438 \u0432\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u041f\u0443\u0442\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 Regex. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u041f\u0443\u0442\u0438 \u043a \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430\u043c \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 Regex."},{"location":"admin-panel/dashboard/configuration-system/","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 (\u0441\u0438\u0441\u0442\u0435\u043c\u0430)","text":""},{"location":"admin-panel/dashboard/configuration-system/#nastroika-sistema","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 (\u0441\u0438\u0441\u0442\u0435\u043c\u0430)","text":"

\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0421\u0430\u0439\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0443 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e \u0440\u044f\u0434\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f PHP, \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 access.admin.super \u0438\u043b\u0438 access.admin.configuration.

\u0412\u043a\u043b\u0430\u0434\u043a\u0430 \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 /user/config/system.yaml. \u042d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0442\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 Grav \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u0430\u0439\u0442\u0430, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.

\u042d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0430\u0441\u043f\u0435\u043a\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u044b Grav.

\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0421\u0438\u0441\u0442\u0435\u043c\u0430.

"},{"location":"admin-panel/dashboard/configuration-system/#soderzhanie","title":"\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435","text":"

\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0417\u0434\u0435\u0441\u044c \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0442\u0435\u043c\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0422\u0435\u043c\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0442\u0435\u043c\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0443\u044e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u043d\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e. \u0427\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441 \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c\u0430\u043c\u0438. \u0414\u043b\u0438\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c\u0430\u043c\u0438. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u0442\u044b \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 (\u043d\u0435) \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0438\u0445 \u0434\u0430\u0442\u044b. \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b. \u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e."},{"location":"admin-panel/dashboard/configuration-system/#iazyki","title":"\u042f\u0437\u044b\u043a\u0438","text":"

\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u0432\u0443\u0445\u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u044f\u0437\u044b\u043a\u043e\u0432, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 'en, fr, de'). \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0432 Grav, \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445 \u0438 \u0442\u0435\u043c\u0430\u0445. \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0432 \u0441\u0435\u0441\u0441\u0438\u0438 \u0425\u0440\u0430\u043d\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0432 \u0441\u0435\u0430\u043d\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042f\u0437\u044b\u043a \u0432 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0435 \u043d\u0430 Home \u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u044f\u0437\u044b\u043a \u0432 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (/en). \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0435 \u043d\u0430 Home \u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443."},{"location":"admin-panel/dashboard/configuration-system/#zagolovki-http","title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 HTTP","text":"

\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 HTTP. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0421\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438\u0441\u0442\u0435\u043a\u0430\u0435\u0442. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0414\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. ETag \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a ETag, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u044b\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430. Vary: Accept Encoding \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a Vary: Accept Encoding, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u043a\u0441\u0438 \u0438 CDN."},{"location":"admin-panel/dashboard/configuration-system/#markdown","title":"Markdown","text":"

\u0423\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 Grav. \u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u044e Markdown Extra, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0434\u0430\u0442\u044c, \u043a\u0430\u043a Grav \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 Markdown.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Markdown Extra \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f Markdown Extra. \u0410\u0432\u0442\u043e \u0440\u0430\u0437\u0440\u044b\u0432\u044b \u0441\u0442\u0440\u043e\u043a \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u044b\u0432\u0430 \u043b\u0438\u043d\u0438\u0438 \u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435 Markdown. \u0410\u0432\u0442\u043e URL \u0441\u0441\u044b\u043b\u043a\u0438 \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 HTML-\u0433\u0438\u043f\u0435\u0440\u0441\u0441\u044b\u043b\u043a\u0438. \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u0433\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0432 HTML-\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438."},{"location":"admin-panel/dashboard/configuration-system/#keshirovanie","title":"\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","text":"

\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Grav \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 CMS \u0441 \u043f\u043b\u043e\u0441\u043a\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c. \u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0412\u041a\u041b/\u0412\u042b\u041a\u041b \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Grav. \u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u044d\u0448\u0430 \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u044d\u0448\u0430. \u041e\u043f\u0446\u0438\u0438: File, Folder \u0438 None. \u0414\u0440\u0430\u0439\u0432\u0435\u0440 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435, \u043a\u0430\u043a\u043e\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043a\u044d\u0448\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Grav. Auto detect = \u043f\u043e\u0438\u0441\u043a \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0433\u043e. \u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u043a\u044d\u0448\u0430 \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0447\u0430\u0441\u0442\u0438 \u043a\u043b\u044e\u0447\u0430 Grav. \u041d\u0435 \u043c\u0435\u043d\u044f\u0439\u0442\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0435. \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0440\u043e\u043a \u0441\u043b\u0443\u0436\u0431\u044b \u043a\u044d\u0448\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. 0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e. \u0421\u0436\u0430\u0442\u0438\u0435 Gzip \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 GZip \u0441\u0436\u0430\u0442\u0438\u0435 Grav \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438."},{"location":"admin-panel/dashboard/configuration-system/#shablonizatsiia-twig","title":"\u0428\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f Twig","text":"

\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 Grav Twig. \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f Twig.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Twig \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u043c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Twig. \u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041e\u0442\u043b\u0430\u0434\u043a\u0430 Twig \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 Twig. \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u044d\u0448 Twig \u043f\u0440\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445. \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0410\u0432\u0442\u043e\u044d\u0441\u043a\u0435\u0439\u043f\u044b \u0432\u0441\u0435\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0432\u0430\u0448 \u0441\u0430\u0439\u0442."},{"location":"admin-panel/dashboard/configuration-system/#aktivy","title":"\u0410\u043a\u0442\u0438\u0432\u044b","text":"

\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b CSS \u0438 JavaScript.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c CSS \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 CSS - \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c CSS \u0421\u043e\u043a\u0440\u0430\u0449\u0430\u0442\u044c CSS \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c CSS (\u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Windows) \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c Windows. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e false \u0438\u0437-\u0437\u0430 ThreadStackSize. \u041f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c CSS \u041f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 CSS \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c JavaScript \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 JS - \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 JS \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c JavaScript \u0421\u043e\u043a\u0440\u0430\u0449\u0430\u0442\u044c JS \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432."},{"location":"admin-panel/dashboard/configuration-system/#obrabotchik-oshibok","title":"\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043e\u043a","text":"

\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u043a\u0430\u043a Grav \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0438\u0445. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0430\u0439\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0412\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0441\u0442\u0438\u043b\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438. \u041b\u043e\u0433\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 /logs."},{"location":"admin-panel/dashboard/configuration-system/#otladchik","title":"\u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a","text":"

\u041a\u0430\u043a \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0442\u043b\u0430\u0434\u043a\u0438 Grav \u0434\u0430\u044e\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a Grav \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u041e\u0442\u043b\u0430\u0434\u043a\u0430 Twig \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Twig. \u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c onShutdown(). false \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438."},{"location":"admin-panel/dashboard/configuration-system/#media","title":"\u041c\u0435\u0434\u0438\u0430","text":"

\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a Grav \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0434\u0438\u0430\u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (85%). \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0432\u0441\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Grav, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0441 \u043c\u0435\u0434\u0438\u0430. \u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0432\u043e\u0434\u044f\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Retina. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043a\u0438 \u043d\u0430 \u043c\u0435\u0434\u0438\u0430 \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043a\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u0442\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430.

\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b (\u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 Grav), \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430, \u0447\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 Gregwar \u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a Grav (\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441\u043c. \u0432 \u044d\u0442\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435). \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 - \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u00ab\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041d\u0435\u0442.

"},{"location":"admin-panel/dashboard/configuration-system/#sessiia","title":"\u0421\u0435\u0441\u0441\u0438\u044f","text":"

\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u0435\u0430\u043d\u0441\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 cookie \u0441\u0435\u0430\u043d\u0441\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u0435\u0441\u0441\u0438\u0439 \u0432 Grav. \u0412\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0442\u0430\u0439\u043c-\u0430\u0443\u0442 \u0441\u0435\u0430\u043d\u0441\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0418\u043c\u044f \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 cookie \u0441\u0435\u0430\u043d\u0441\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043a\u0432\u044b, \u0446\u0438\u0444\u0440\u044b, \u0434\u0435\u0444\u0438\u0441\u044b \u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f."},{"location":"admin-panel/dashboard/configuration-system/#dopolnitelno","title":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","text":"

\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u044f base_url. \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043b\u044f Apache \u0432 Windows."},{"location":"admin-panel/dashboard/profile/","title":"\u041f\u0440\u043e\u0444\u0438\u043b\u044c","text":""},{"location":"admin-panel/dashboard/profile/#profil","title":"\u041f\u0440\u043e\u0444\u0438\u043b\u044c","text":"

\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f. \u0417\u0434\u0435\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0430\u0448 \u0430\u0432\u0430\u0442\u0430\u0440, \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u0438\u043c\u044f, \u044f\u0437\u044b\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u0414\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u0438 \u0443\u0440\u043e\u0432\u043d\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.

\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u0440\u043e\u0441\u0442. \u041f\u043e\u0441\u043b\u0435 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u044e, \u0432\u044b\u0431\u0440\u0430\u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u0432\u0430\u0442\u0430\u0440\u0430 \u0438 \u0438\u043c\u0435\u043d\u0435\u043c. \u0412\u044b \u043f\u043e\u043f\u0430\u0434\u0435\u0442\u0435 \u043f\u0440\u044f\u043c\u043e \u0432 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043a URL-\u0430\u0434\u0440\u0435\u0441\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 admin/user/example. \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 example \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0438 \u0445\u043e\u0442\u044f\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0438 / \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.

"},{"location":"admin-panel/dashboard/profile/#foto-profilia","title":"\u0424\u043e\u0442\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f","text":"

\u0412 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041f\u0440\u043e\u0444\u0438\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0441\u0442\u0438\u043b\u044c\u043d\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0439 \u0430\u0432\u0430\u0442\u0430\u0440, \u0438\u043c\u044f \u0438 \u0442\u0438\u0442\u0443\u043b. \u0412\u0430\u0448 \u0430\u0432\u0430\u0442\u0430\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Gravatar, \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b \u0430\u0432\u0430\u0442\u0430\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u0438 \u200b\u200b\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432 Gravatar, \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u044b\u0431\u043e\u0440\u0443, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u044e\u0434\u0430, \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0432 \u0444\u0430\u0439\u043b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u044e\u0434\u0430 \u0438\u043b\u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0449\u0435\u043b\u043a\u043d\u0443\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043d\u0430\u0439\u0442\u0438, \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.

\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"admin-panel/dashboard/profile/#akkaunt","title":"\u0410\u043a\u043a\u0430\u0443\u043d\u0442","text":"

\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0423\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0438\u043c\u044f, \u044f\u0437\u044b\u043a \u0438 \u0442. \u0434. \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0441\u0432\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432\u0430\u0448\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e.

"},{"location":"admin-panel/dashboard/profile/#dvukhfaktornaia-autentifikatsiia","title":"\u0414\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f","text":"

\u0414\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043c. \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430.

"},{"location":"admin-panel/dashboard/profile/#urovni-dostupa","title":"\u0423\u0440\u043e\u0432\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430","text":"

\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043d\u0430\u0439\u0434\u0443\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439. \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

\u0412\u043e\u0442 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 admin.super \u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u0443\u043f\u0435\u0440\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0435\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430. admin.login \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u0414\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Yes. admin.cache \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043d\u043e\u043f\u043a\u0430\u043c \u0441\u0431\u0440\u043e\u0441\u0430 \u043a\u044d\u0448\u0430. admin.configuration \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0438\u043b\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432. admin.configuration_system \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. admin.configuration_site \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0421\u0430\u0439\u0442 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. admin.configuration_media \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u041c\u0435\u0434\u0438\u0430 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. admin.configuration_info \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. admin.pages \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. admin.maintenance \u0414\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. admin.statistics \u0414\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. admin.plugins \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. admin.themes \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0422\u0435\u043c\u044b \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. admin.users \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u043c \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451. \u042d\u0442\u043e \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. site.login \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u0439\u0442\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441."},{"location":"admin-panel/extending/","title":"\u041e\u0431\u0437\u043e\u0440","text":""},{"location":"admin-panel/extending/#rasshirenie-adminki","title":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439.

"},{"location":"admin-panel/extending/#ponimanie-tem-adminki","title":"\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u0435\u043c \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u041a\u0430\u043a \u0438 \u043f\u0440\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0442\u0435\u043c\u044b Grav, \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0434\u043e\u043b\u0436\u043d\u044b \u0442\u043e\u0447\u043d\u043e \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0442\u0435\u043c\u044b \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0430\u0432\u0430\u0442\u0430\u0440 \u0432 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c nav-user-avatar.html.twig.

\u0412 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u043f\u0443\u0442\u044c \u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439: user/plugins/admin/themes/grav/templates, \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u044b\u0439 ADMIN_TEMPLATES. \u0424\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0449\u0435\u043c, \u044d\u0442\u043e ADMIN_TEMPLATES/partials/nav-user-avatar.html.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <img src=\"https://www.gravatar.com/avatar/{{ admin.user.email|md5 }}?s=47\" />.

\u0412 \u0432\u0430\u0448\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u043f\u0443\u0442\u044c \u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c: user/plugins/myadminplugin/admin/themes/grav/templates, \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u044b\u0439 PLUGIN_TEMPLATES. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c PLUGIN_TEMPLATES/partials/nav-user-avatar.html.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <img src=\"{{ myadminplugin_avatar_image_path }}\" />.

\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u0443\u0442\u044c \u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0443, \u043d\u043e \u0431\u0435\u0437 \u0440\u0430\u0437\u0440\u0443\u0448\u0435\u043d\u0438\u044f. \u041c\u044b \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438 \u043d\u0435 \u043c\u0435\u0448\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c \u0442\u0435\u043c\u0430\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0432\u043e\u0442 \u0442\u0430\u043a:

<?php\n\npublic static function getSubscribedEvents()\n{\n    return [\n        'onAdminTwigTemplatePaths' => ['onAdminTwigTemplatePaths', 0]\n    ];\n}\n\npublic function onAdminTwigTemplatePaths($event)\n{\n    $paths = $event['paths'];\n    $paths[] = __DIR__ . '/admin/themes/grav/templates';\n    $event['paths'] = $paths;\n}\n

\u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0435\u043c\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u043b\u0430\u0431\u044b\u043c \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0430\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d. \u0412 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 \u043b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c nav-user-avatar.html.twig, \u0447\u0435\u043c nav.html.twig, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 {% include 'partials/nav-user-details.html.twig' %}, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439.

\u0412 \u0444\u0430\u0439\u043b\u0430\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440 |e \u0434\u043b\u044f \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HTML-\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c |raw \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 HTML.

"},{"location":"admin-panel/extending/#dobavlenie-polzovatelskogo-polia","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044f","text":"

\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0435, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0432 PLUGIN_TEMPLATES/forms/fields/myfield. \u0412 \u043f\u0430\u043f\u043a\u0435 myfield \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0448\u0430\u0431\u043b\u043e\u043d Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u0435. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u2014 \u043d\u0430\u0439\u0442\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432 ADMIN_TEMPLATES/forms/fields \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u043e\u043d\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u0435\u0440 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 HTML, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c PLUGIN_TEMPLATES/forms/fields/range/range.html.twig. \u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c:

{% extends \"forms/field.html.twig\" %}\n\n{% block input_attributes %}\n    type=\"range\"\n    {% if field.validate.min %}min=\"{{ field.validate.min }}\"{% endif %}\n    {% if field.validate.max %}max=\"{{ field.validate.max }}\"{% endif %}\n    {% if field.validate.step %}step=\"{{ field.validate.step }}\"{% endif %}\n    {{ parent() }}\n{% endblock %}\n

\u042d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0438\u043f \u043f\u043e\u043b\u044f \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u00bb \u0441 \u0442\u0438\u043f\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0441\u0434\u0432\u0438\u0433\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0443. \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0435, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0432 blueprints.yaml:

form:\n  fields:\n    radius:\n      type: range\n      label: Radius\n      id: radius\n      default: 100\n      validate:\n        min: 0\n        max: 100\n        step: 10\n

\u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u043f\u043e\u043b\u0437\u0443\u043d\u043e\u043a \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 100, \u0433\u0434\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 0 \u0434\u043e 100, \u0438 \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 10, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c.

\u041c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u044d\u0442\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 prepend \u0438\u043b\u0438append, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041c\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c range.html.twig, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

{% extends \"forms/field.html.twig\" %}\n\n{% block input_attributes %}\n    type=\"range\"\n    style=\"display: inline-block;vertical-align: middle;\"\n    {% if field.id is defined %}\n        oninput=\"{{ field.id|e }}_output.value = {{ field.id|e }}.value\"\n    {% endif %}\n    {% if field.validate.min %}min=\"{{ field.validate.min }}\"{% endif %}\n    {% if field.validate.max %}max=\"{{ field.validate.max }}\"{% endif %}\n    {% if field.validate.step %}step=\"{{ field.validate.step }}\"{% endif %}\n    {{ parent() }}\n{% endblock %}\n{% block append %}\n  {% if field.id is defined %}\n    <output\n        name=\"{{ (scope ~ field.name)|fieldName }}\"\n        id=\"{{ field.id|e }}_output\"\n        style=\"display: inline-block;vertical-align: baseline;padding: 0 0.5em 5px 0.5em;\"\n    >\n    {{ value|join(', ')|e('html_attr') }}\n    </output>\n  {% endif %}\n{% endblock append %}\n

\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u0433 <output>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a \u043d\u0435\u043c\u0443 \u0438 \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u043e\u043b\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0442\u0438\u043b\u044c \u0434\u043b\u044f \u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f. \u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043f\u043e\u043b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 oninput, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0441\u044f \u0442\u0435\u0433 <output> \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u043b\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u043b\u0437\u0443\u043d\u043e\u043a \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430, \u0438\u043c\u0435\u043b\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e id, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, id: radius, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 \u0432\u044b\u0448\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0447\u0435\u043c-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 id: myadminplugin_radius, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432.

!!\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043d\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0430\u043f\u043a\u0438 PLUGIN_TEMPLATES), \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e |e. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u0428\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f Twig > \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e.

"},{"location":"admin-panel/extending/#sozdanie-polzovatelskikh-shablonov-stranits","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u041a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432 \u041e\u0441\u043d\u043e\u0432\u0430\u0445 \u0442\u0435\u043c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u044f\u043c\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0432 Grav \u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435/\u0442\u0435\u043c\u0435. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0438 \u0444\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.

"},{"location":"admin-panel/extending/#dobavlenie-polzovatelskogo-shablona-stranits-v-temu-plagin","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u0442\u0435\u043c\u0443/\u043f\u043b\u0430\u0433\u0438\u043d","text":"

\u0412 \u043a\u043e\u0440\u043d\u0435 \u043f\u0430\u043f\u043a\u0438 \u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c templates. \u0412\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b mypage.html.twig. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d Twig \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u00abmypage\u00bb.

\u041f\u0440\u0438\u043c\u0435\u0440 mypage.html.twig:

{% extends 'partials/base.html.twig' %}\n\n{% block content %}\n    {{ page.header.newTextField }}\n    {{ page.content}}\n{% endblock %}\n

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043c\u0430\u0445 Twig \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Twig Primer.

\u0422\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442 \u0444\u0430\u0439\u043b\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0432 \u043f\u0430\u043f\u043a\u0435 templates \u0442\u0435\u043c\u044b. \u0415\u0441\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0431\u044b\u0442\u0438\u0435onTwigTemplatePaths:

<?php\n\npublic function onPluginsInitialized()\n{\n    // If in an Admin page.\n    if ($this->isAdmin()) {\n        return;\n    }\n    // If not in an Admin page.\n    $this->enable([\n        'onTwigTemplatePaths' => ['onTwigTemplatePaths', 1],\n    ]);\n}\n\n/**\n * Add templates directory to twig lookup paths.\n */\npublic function onTwigTemplatePaths()\n{\n    $this->grav['twig']->twig_paths[] = __DIR__ . '/templates';\n}\n
"},{"location":"admin-panel/extending/#dobavlenie-polzovatelskogo-chertezha-stranitsy-v-temu-plagin","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0442\u0435\u043c\u0443/\u043f\u043b\u0430\u0433\u0438\u043d","text":"

\u0427\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u043e\u0432\u0443\u044e \u043e\u043f\u0446\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b mypage, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0438\u043c\u0435\u043d\u0435\u043cblueprints \u0432 \u043a\u043e\u0440\u043d\u0435 \u0442\u0435\u043c\u044b/\u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u0412\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b mypage.yaml. \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0433\u043b\u0430\u0432\u0435 \u0424\u043e\u0440\u043c\u044b.

\u041f\u0440\u0438\u043c\u0435\u0440 \u0447\u0435\u0440\u0442\u0435\u0436\u0430 mypage.yaml \u043d\u0438\u0436\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430 \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 header.newTextField \u043f\u043e\u0434 \u0432\u043a\u043b\u0430\u0434\u043a\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e:

title: My Page Blueprint\n'@extends':\n    type: default\n    context: blueprints://pages\n\nform:\n  fields:\n    tabs:\n      type: tabs\n      active: 1\n      fields:\n        content:\n          type: tab\n          fields:\n             header.newTextField:\n              type: text\n              label: 'New Text Field'\n

\u041f\u043e\u0434\u043e\u0431\u043d\u043e \u043f\u0430\u043f\u043a\u0435 templates, \u0442\u0435\u043c\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0432\u0441\u0435 yaml-\u0444\u0430\u0439\u043b\u044b \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 blueprints. \u0415\u0441\u043b\u0438 \u0447\u0435\u0440\u0442\u0435\u0436 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onGetPageTemplates:

<?php\n\npublic function onPluginsInitialized()\n{\n    // If in an Admin page.\n    if ($this->isAdmin()) {\n        $this->enable([\n            'onGetPageBlueprints' => ['onGetPageBlueprints', 0],\n            'onGetPageTemplates' => ['onGetPageTemplates', 0],\n        ]);\n        return;\n    }\n\n/**\n    * Add blueprint directory.\n    */\npublic function onGetPageBlueprints(Event $event)\n{\n    $types = $event->types;\n    $types->scanBlueprints('plugin://' . $this->name . '/blueprints');\n}\n\n/**\n    * Add templates directory.\n    */\npublic function onGetPageTemplates(Event $event)\n{\n    $types = $event->types;\n    $types->scanTemplates('plugin://' . $this->name . '/templates');\n}\n
"},{"location":"admin-panel/extending/#sozdanie-novoi-stranitsy","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439 \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043d\u0430\u0436\u0430\u0432 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u0432\u044b\u0431\u0440\u0430\u0432 \u00ab\u041c\u043e\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u00bb:

\u0412 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 \u00ab\u041d\u043e\u0432\u043e\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435\u00bb:

"},{"location":"admin-panel/extending/admin-events/","title":"\u0425\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":""},{"location":"admin-panel/extending/admin-events/#khuki-sobytii-adminki","title":"\u0425\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u041f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 Grav. \u0421\u043c. \u043e\u0431\u0449\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u0433\u043b\u0430\u0432\u0435 \u041f\u043b\u0430\u0433\u0438\u043d\u044b.

"},{"location":"admin-panel/extending/admin-events/#vkliuchenie-khuka-sobytii-adminki","title":"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0445\u0443\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439.

"},{"location":"admin-panel/extending/admin-events/#dostupnye-khuki-sobytii-adminki","title":"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0445\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":""},{"location":"admin-panel/extending/admin-events/#onadmintaskexecute","title":"onAdminTaskExecute","text":"

\u041f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c. \u0417\u0430\u0434\u0430\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0432\u0445\u043e\u0434 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435, 2faverify \u0438 \u0442. \u0434. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439.

"},{"location":"admin-panel/extending/admin-events/#onadmincreatepagefrontmatter","title":"onAdminCreatePageFrontmatter","text":"

\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u043e\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"admin-panel/extending/admin-events/#onadminsave","title":"onAdminSave","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onAdminSave() \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b $object \u043f\u0435\u0440\u0435\u0434 \u0438\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.

"},{"location":"admin-panel/extending/admin-events/#onadminaftersave","title":"onAdminAfterSave","text":"

\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f.

"},{"location":"admin-panel/extending/admin-events/#onadminaftersaveas","title":"onAdminAfterSaveAs","text":"

\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0430\u043f\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043d\u0435\u043b\u044c \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430.

"},{"location":"admin-panel/extending/admin-events/#onadminafterdelete","title":"onAdminAfterDelete","text":"

\u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043f\u0430\u043f\u043a\u0438. \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u043a\u044d\u0448\u0430.

"},{"location":"admin-panel/extending/admin-events/#onadminafteraddmedia","title":"onAdminAfterAddMedia","text":"

\u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430, \u043d\u043e \u0434\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.

"},{"location":"admin-panel/extending/admin-events/#onadminafterdelmedia","title":"onAdminAfterDelMedia","text":"

\u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430, \u043d\u043e \u0434\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.

"},{"location":"admin-panel/faq/","title":"\u0427\u0430\u0412\u043e","text":""},{"location":"admin-panel/faq/#chavo","title":"\u0427\u0430\u0412\u043e","text":"

\u042d\u0442\u043e\u0442 FAQ \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432, \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u0438 \u0442\u0440\u044e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0442\u0434\u0430\u0447\u0443 \u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

"},{"location":"admin-panel/faq/#ruchnaia-ustanovka-adminki","title":"\u0420\u0443\u0447\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u0420\u0443\u0447\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0451 \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438:

  • admin
  • login
  • form
  • email

\u0420\u0430\u0441\u043f\u0430\u043a\u0443\u0439\u0442\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0443 user/plugins, \u0437\u0430\u0442\u0435\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0430\u043f\u043a\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 admin/, login/, form/ \u0438 email/. \u0417\u0430\u0442\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043d\u0438\u0436\u0435.

"},{"location":"admin-panel/faq/#dobavlenie-i-upravlenie-polzovateliami","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0443\u043a\u0430\u0436\u0435\u0442\u0435 \u0441\u0432\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0430\u0439\u0442\u0435. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0432\u0435\u0431-\u0444\u043e\u0440\u043c\u0430, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f-\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435/\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u0412 \u0441\u0432\u043e\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0441\u0430\u0439\u0442\u0430 Grav, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:

bin/plugin login newuser\n

\u042d\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041a \u043d\u0438\u043c \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u0430\u0440\u043e\u043b\u044f, \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.

\u0412\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0435 \u043e\u0442 3 \u0434\u043e 16 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0431\u0443\u043a\u0432\u044b, \u0446\u0438\u0444\u0440\u044b, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u0435\u0444\u0438\u0441\u044b. \u0412 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0431\u0443\u043a\u0432\u044b, \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b.

\u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:

\u0420\u043e\u043b\u044c \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Admin \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u0430 \u0440\u043e\u043b\u044c \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c. Site \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435. \u042d\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442 \u0432\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. Admin and Site \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443, \u043a\u0430\u043a \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443, \u0442\u0430\u043a \u0438 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.

\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 SITE_ROOT/user/accounts/, \u0438 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b YAML, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 SITE_ROOT/user/accounts/tester.yaml \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c:

\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 tester.yaml \u0434\u0438\u043a\u0442\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f tester

email: test@rockettheme.com\naccess:\n  admin:\n    login: true\n    super: true\n  site:\n    login: true\nfullname: 'Tester McTesting'\ntitle: Admin\nhashed_password: $2y$10$5RAUI6ZCISWR.4f0D6FILu3efYq3078ZX/.9vtAnZbjxS/4PXN/WW\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 YAML-\u0444\u0430\u0439\u043b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0432 \u0441\u0432\u043e\u0439 \u0430\u0432\u0430\u0442\u0430\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u0442 \u0432\u0430\u0441 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0433\u0434\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0445.

\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0430\u0432\u0430\u0442\u0430\u0440\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f Gravatar, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.

\u041f\u043e \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0445\u044d\u0448\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0438\u0437 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

"},{"location":"admin-panel/faq/#upravlenie-dostupom","title":"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c","text":"

\u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b yaml \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \"\u0434\u043e\u0441\u0442\u0443\u043f\". \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u044d\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

\u0412\u043e\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u043d\u044b\u0435 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430:

  • admin.login: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430
  • admin.super: \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u044f \u0441\u0443\u043f\u0435\u0440\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430
  • admin.pages: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435
  • admin.main maintenance: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c Grav \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u043a\u044d\u0448
  • admin.plugins: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435
  • admin.themes: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0442\u0435\u043c, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u043c\u044b, \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0435\u043c\u044b \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435
  • admin.statistics: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0441\u0430\u0439\u0442\u0430
  • admin.cache: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448
  • admin.configuration: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u0430\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435. \u0422\u043e\u043b\u044c\u043a\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u00ab\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445\u00bb \u0431\u0435\u0437 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u043c\u0435\u043d\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.
  • admin.configuration_system: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438
  • admin.configuration_site: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0430\u0439\u0442\u0430
  • admin.configuration_media: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430
  • admin.configuration_info: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u044d\u0442\u043e\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0435
  • \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0451 \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u044b:
  • admin.tools
  • admin.settings
  • admin.users

C\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b user.yaml, \u043f\u043e\u043a\u0430 \u044d\u0442\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u043e\u0448\u0435\u043b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0432\u0441\u0442\u0443\u043f\u044f\u0442 \u0432 \u0441\u0438\u043b\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d \u0432\u044b\u0439\u0434\u0435\u0442 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0441\u043d\u043e\u0432\u0430 \u0432\u043e\u0439\u0434\u0435\u0442 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.

"},{"location":"admin-panel/faq/#polzovatelskii-url-adres-adminki","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0432\u0430\u0448\u0443 \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u044c - \u0441\u043a\u0440\u044b\u0442\u044c \u0435\u0451 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 \u0441

https://yourwebsite.com/admin\n

\u043a \u0447\u0435\u043c\u0443-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u043c\u0443, \u043e \u0447\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0443\u0434\u043d\u0435\u0435 \u0443\u0433\u0430\u0434\u0430\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 admin.yaml, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/plugins/admin/, \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 user/config/plugins/admin.yaml.

\u0417\u0430\u0442\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 route: /admin \u043d\u0430 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043e\u043b\u0435\u0435 \u0434\u0432\u0443\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, route: /myspecialplace, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u0432\u044b \u0432\u0432\u0435\u0434\u0435\u0442\u0435

https://yourwebsite.com/myspecialplace\n
"},{"location":"admin-panel/faq/#avtonomnyi-rezhim","title":"\u0410\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c","text":"

\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0435\u0440\u044f\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c, Grav Admin \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c. \u042d\u0442\u043e\u0442 \u0440\u0435\u0436\u0438\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u0434 \u043d\u0438\u0436\u043d\u0438\u043c \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043b\u0435\u0432\u043e\u043c \u0443\u0433\u043b\u0443 \u043e\u043a\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

\u0412 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f CMS, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438\u043b\u0438 \u0442\u0435\u043c. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.

\u041f\u043e\u0441\u043b\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442, \u200b\u200b\u0438 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f.

"},{"location":"admin-panel/introduction/","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":""},{"location":"admin-panel/introduction/#vvedenie","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":"

\u041f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0434\u043b\u044f Grav \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Grav \u0438 \u043b\u0435\u0433\u043a\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u042d\u0442\u043e \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438\u043a\u043e\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Grav. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0432\u0438\u0434, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u043b. \u041e\u043f\u044b\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.

"},{"location":"admin-panel/introduction/#osobennosti","title":"\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438","text":"
  • \u041b\u043e\u0433\u0438\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044f
  • \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0431\u044b\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f
  • \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c
  • \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 Grav \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a
  • \u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f, \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0430\u0439\u0442\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446
  • \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 Ajax
  • \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Ajax
  • \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b
  • \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u0430\u0439\u0442\u0430
  • \u041d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0444\u043e\u0440\u043c\u044b \u0438\u043b\u0438 YAML
  • \u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0438 \u043f\u043e\u0438\u0441\u043a\u043e\u043c
  • \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446
  • \u041c\u043e\u0449\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0441 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Grav
  • \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430, \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0431\u0435\u0437 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u044e\u0449\u0438\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432
  • \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f
  • \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043c \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a
  • \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b
  • \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u043c\u044b
  • \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u043e\u0432\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e GPM
  • ACL \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c
"},{"location":"admin-panel/introduction/#podderzhka","title":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430","text":"

\u041f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 - \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0430\u043c\u0431\u0438\u0446\u0438\u043e\u0437\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0441\u0442 \u0432\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0432\u0430\u0448\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 Grav. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435 \u0432 \u043d\u0435\u043c \u043e\u0434\u043d\u0443 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0440\u0435\u0434\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043d\u0430\u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443.

\u0414\u043b\u044f \u0436\u0438\u0432\u043e\u0433\u043e \u0447\u0430\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 Discord Chat Server \u0434\u043b\u044f \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

\u0414\u043b\u044f \u043e\u0448\u0438\u0431\u043e\u043a, \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 issue \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 GitHub.

"},{"location":"admin-panel/introduction/#ustanovka","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430","text":"

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f Grav {{grav_version}} \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u044f\u044f. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 Grav \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435\u0441\u044c \u0434\u043e \u043d\u0438\u0445 (-f \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 GPM):

bin/gpm version -f\nbin/gpm selfupgrade\n

\u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u043e\u0449\u044c 3 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0433\u0438\u043d Admin \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0432\u0430\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b login, forms \u0438 email. \u041e\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0447\u0435\u0440\u0435\u0437 GPM, \u0438 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0435\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435:

bin/gpm install admin\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GPM \u0432 \u0441\u0432\u043e\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.

"},{"location":"admin-panel/introduction/#sozdanie-polzovatelia","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","text":"

\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0443\u043a\u0430\u0436\u0435\u0442\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0448\u0430\u0433, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c-\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u0430\u0448\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c.

\u041f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0444\u043e\u0440\u043c\u0443 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.

\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/accounts/ \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0430\u043c \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CLI-\u043a\u043e\u043c\u0430\u043d\u0434\u044b bin/plugin login newuser. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 FAQ \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432.

"},{"location":"admin-panel/introduction/#slozhnost-imeni-polzovatelia-i-parolia","title":"\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044f","text":"

\u0428\u0430\u0431\u043b\u043e\u043d\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0438\u043c\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0432 system/config/system.yaml.

\u0428\u0430\u0431\u043b\u043e\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 (system.username_regex) \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0446\u0438\u0444\u0440, \u0434\u0435\u0444\u0438\u0441\u043e\u0432 \u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0439. \u0418\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0442 3 \u0434\u043e 16 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.

\u0428\u0430\u0431\u043b\u043e\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043f\u0430\u0440\u043e\u043b\u0435\u0439 (system.pwd_regex) \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437 \u0432\u043e\u0441\u044c\u043c\u0438 (8) \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u0443 \u0446\u0438\u0444\u0440\u0443, \u043e\u0434\u043d\u0443 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0438 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043d\u0443\u044e \u0431\u0443\u043a\u0432\u0443.

"},{"location":"admin-panel/introduction/#ispolzovanie","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443, \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 \u0441\u0432\u043e\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0430 http://yoursite.com/admin. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043c\u044f_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 YAML-\u0444\u0430\u0439\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0440\u0430\u043d\u0435\u0435.

\u041f\u043e\u0441\u043b\u0435 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0430\u0448 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d \u0438 \u0437\u0430\u043c\u0435\u043d\u0435\u043d \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c.

"},{"location":"admin-panel/page/","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":""},{"location":"admin-panel/page/#stranitsy","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0420\u0430\u0437\u0434\u0435\u043b \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0441\u043a\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0441\u0440\u0430\u0437\u0443 \u0443\u0437\u043d\u0430\u0442\u044c, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430.

\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 access.admin.super \u0438\u043b\u0438 access.admin.pages.list. \u0421\u043c. \u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0413\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439

\u0415\u0441\u043b\u0438 \u0432\u044b \u0447\u0430\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0430\u0439\u0442\u0435, \u044d\u0442\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u0430\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0430.

"},{"location":"admin-panel/page/#dobavlenie-novykh-stranits","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u0422\u0440\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438. \u041a\u043d\u043e\u043f\u043a\u0430 \u041d\u0430\u0437\u0430\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0430\u0441 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0430 \u043a\u043d\u043e\u043f\u043a\u0438 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u041d\u0438\u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u044d\u0442\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a.

"},{"location":"admin-panel/page/#dobavlenie-stranitsy","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041a\u043d\u043e\u043f\u043a\u0430 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u0435\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u0432\u0432\u0435\u0441\u0442\u0438 \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0418\u043c\u044f \u043f\u0430\u043f\u043a\u0438, \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0428\u0430\u0431\u043b\u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0434\u043e\u043b\u0436\u043d\u0430 \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u043e\u0439.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u0432\u0432\u043e\u0434\u0438\u0442\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0418\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430. \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u042d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0431\u043b\u043e\u0433\u0430) \u0438\u043b\u0438 \u0431\u044b\u0442\u044c \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 child_type \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0428\u0430\u0431\u043b\u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. selected. \u0428\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0438\u0437 \u0442\u0435\u043c\u044b \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u0412\u0438\u0434\u0438\u043c\u0430\u044f \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442, \u0445\u043e\u0442\u0438\u0442\u0435 \u043b\u0438 \u0432\u044b, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u044b\u043b\u0430 \u0432\u0438\u0434\u043d\u0430 \u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u041c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430 \u0410\u0432\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u043e\u0441\u044c \u0437\u0430 \u0432\u0430\u0441. \u041f\u0440\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430-\u0431\u0440\u0430\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0430\u044f \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441, \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0438\u0434\u043d\u0430. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d \u0435\u0433\u043e \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442.

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0432\u044b\u0431\u0440\u0430\u0432 \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c, \u0432\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435.

\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u044d\u0442\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0432\u043b\u0438\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438.

"},{"location":"admin-panel/page/#dobavlenie-modulnoi-stranitsy","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0412\u0442\u043e\u0440\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442. \u041c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043d\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u043a\u0430\u043a \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. \u042d\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0445 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0412\u043e\u0442 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0430 \u043f\u043e\u043b\u0435\u0439 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u043e\u043a\u043d\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0418\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0430\u0448\u0435\u0439 \u043d\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u043c\u043e\u0439 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0432\u044b\u0431\u0440\u0430\u0432 \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c, \u0432\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435.

"},{"location":"admin-panel/page/#spisok-stranits","title":"\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u0432\u0430\u0448\u0438\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0437\u043d\u0430\u0442\u044c, \u0432\u0438\u0434\u043d\u044b \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043d\u0435\u0442.

\u0412\u044b\u0431\u043e\u0440 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u0432\u0430\u0441 \u043f\u0440\u044f\u043c\u043e \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0437\u043d\u0430\u0447\u043e\u043a X \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.

\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0432\u0435\u0434\u0435\u0442\u0435 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u0437\u043d\u0430\u0447\u043e\u043a \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u043d \u0441\u043e\u043e\u0431\u0449\u0438\u0442 \u0432\u0430\u043c \u0435\u0451 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2022 \u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u2022 \u0412\u0438\u0434\u0438\u043c\u0430\u044f, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 (\u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 URL-\u0430\u0434\u0440\u0435\u0441) \u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 (\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u043d\u044e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438).

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0438\u0449\u0435\u0442\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0442\u0438\u043f\u0443, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435, \u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0438/\u0438\u043b\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430), \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u043f\u043e\u0438\u0441\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0438\u0449\u0435\u0442\u0435.

"},{"location":"admin-panel/page/advanced/","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u044b\u0439)","text":""},{"location":"admin-panel/page/advanced/#redaktor-ekspertnyi","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u044b\u0439)","text":"

\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u2014 \u043c\u043e\u0449\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b), \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0442\u0435\u043c\u044b.

\u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439.

\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 access.admin.super \u0438\u043b\u0438 access.admin.pages.list. \u0421\u043c. \u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0413\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0444\u043b\u0430\u0436\u043a\u0438 \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u0438 \u043f\u043e\u043b\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0415\u0441\u043b\u0438 \u0438\u0445 \u043d\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u0442\u044c, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u0443\u0441\u0442\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0438\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

"},{"location":"admin-panel/page/advanced/#nastroiki","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","text":"

\u0412 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0435\u0451 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438 \u0448\u0430\u0431\u043b\u043e\u043d, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0427\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0427\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c. \u0418\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0417\u0430\u0434\u0430\u0435\u0442 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c - \u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f - \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0428\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d (\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043c\u043e\u0439) \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u042d\u0442\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041a\u043b\u0430\u0441\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u041a\u043b\u0430\u0441\u0441\u044b, \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e \u043f\u043e\u043b\u0435, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."},{"location":"admin-panel/page/advanced/#poriadok","title":"\u041f\u043e\u0440\u044f\u0434\u043e\u043a","text":"

\u0420\u0430\u0437\u0434\u0435\u043b \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0421\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."},{"location":"admin-panel/page/advanced/#pereopredeleniia","title":"\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f","text":"

\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f - \u044d\u0442\u043e \u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u0435\u043b\u044f\u044e\u0442 \u0432\u0430\u0448\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442 \u0434\u043b\u044f \u0435\u0451 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438, \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043f\u043e \u043f\u0440\u044f\u043c\u043e\u043c\u0443 URL-\u0430\u0434\u0440\u0435\u0441\u0443.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c Twig \u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041c\u0435\u043d\u044e \u0421\u0442\u0440\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043c\u0435\u043d\u044e. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a. \u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0428\u0430\u0431\u043b\u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0442\u0438\u043f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0443. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u0438\u0434\u0438\u043c\u0430\u044f \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438."},{"location":"admin-panel/page/advanced/#pereadresatsiia-marshruta","title":"\u041f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430","text":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430."},{"location":"admin-panel/page/advanced/#spetsialnye-pereopredeleniia","title":"\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f","text":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0438\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438."},{"location":"admin-panel/page/configuration/","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":""},{"location":"admin-panel/page/configuration/#nastroika","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Admin event compatibility \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f onAdminSave \u0438 onAdminSaveAfter \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043c. \u041e\u0431\u044a\u0435\u043a\u0442\u044b Flex.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0437\u0430 \u0441\u0447\u0451\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.. \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043b\u044f \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e HTML. \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u0421\u0440\u043e\u043a \u0441\u043b\u0443\u0436\u0431\u044b \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445.

\u0415\u0441\u043b\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 HTML-\u043a\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043a\u044d\u0448 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e {% do block.disableCache() %}.

"},{"location":"admin-panel/page/editor/","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435)","text":""},{"location":"admin-panel/page/editor/#redaktor-soderzhanie","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435)","text":"

\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u2014 \u044d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b), \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0442\u0435\u043c\u044b.

\u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439.

\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 access.admin.super \u0438\u043b\u0438 access.admin.pages.list. \u0421\u043c \u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0413\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439

\u0412\u043a\u043b\u0430\u0434\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043d\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u0444\u043e\u0440\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u0435\u043c\u0430\u0445 Grav, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u044b. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u043b\u0435 \u0444\u043e\u0440\u043c\u044b \u0438\u0437 \u0440\u044f\u0434\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0435\u043c\u0443 \u0438 \u0448\u0430\u0431\u043b\u043e\u043d, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0412\u043a\u043b\u0430\u0434\u043a\u0438 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0442\u0435\u043c \u0438\u043c\u0435\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430 \u044d\u0442\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u044d\u0442\u0438\u0445 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0445 \u0447\u0435\u043c-\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u0438\u043c. \u041c\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0442\u0435\u043c\u0435 Antimatter, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0436\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430.

\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0432 \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"admin-panel/page/editor/#upravlenie","title":"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435","text":"

\u0412\u0432\u0435\u0440\u0445\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c, \u0443\u0434\u0430\u043b\u044f\u0442\u044c, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u041d\u0430\u0437\u0430\u0434, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

\u041a\u043d\u043e\u043f\u043a\u0438 \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u0441\u0430\u043c\u0438 \u0437\u0430 \u0441\u0435\u0431\u044f. \u041e\u043d\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442 \u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.

\u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u043e\u043f\u0446\u0438\u044f \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e.

\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u00ab-2\u00bb (\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441, \u0435\u0441\u043b\u0438 \u00ab-2\u00bb \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f) \u0432 \u043a\u043e\u043d\u0446\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043c\u044f \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0430\u043f\u043a\u0438 \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e.

"},{"location":"admin-panel/page/editor/#zagolovok","title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","text":"

\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u0444\u0430\u043a\u0442\u0443\u043c \u0437\u0434\u0435\u0441\u044c. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043e\u043a\u0430\u0436\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438), \u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u043b\u044e\u0434\u0438 \u0432\u0438\u0434\u044f\u0442 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435.

"},{"location":"admin-panel/page/editor/#soderzhimoe-redaktora-stranits","title":"\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u042d\u0442\u043e \u0441\u0435\u0440\u0434\u0446\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u0417\u0434\u0435\u0441\u044c \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0435\u043b\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u043e\u0449\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430\u0445 \u043f\u0440\u0435\u043c\u0438\u0443\u043c-\u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043e\u043a \u0438 , \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043f\u0440\u0430\u0432\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 Grav \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 Markdown, \u044f\u0440\u043b\u044b\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0442\u0435\u0433\u0438 Markdown \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0432\u044b\u0431\u043e\u0440 \u0437\u043d\u0430\u0447\u043a\u0430 B \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u043c\u0438 \u0442\u0435\u0433\u0430\u043c\u0438 (\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c).

\u0412\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430:

\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0436\u0438\u0440\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u0443\u0440\u0441\u0438\u0432. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 ~~\u0437\u0430\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435~~. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0434\u0438\u0430. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0446\u0438\u0442\u0430\u0442\u044b. \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0430\u0432\u043a\u0443 \u043a\u043e\u0434\u0430. \u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043e\u0434\u0430. \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c."},{"location":"admin-panel/page/editor/#vlozheniia","title":"\u0412\u043b\u043e\u0436\u0435\u043d\u0438\u044f","text":"

\u0421\u0435\u043a\u0446\u0438\u044f \u0412\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430\u043c \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435, \u0447\u0442\u043e \u0438 \u0444\u0430\u0439\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043a\u043e\u0441\u043d\u0443\u0442\u044c\u0441\u044f \u0431\u0435\u043b\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441\u0435\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.

\u0423 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443? \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u0443\u0440\u0441\u043e\u0440 \u043c\u044b\u0448\u0438 \u043d\u0430 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442 \u043c\u0435\u0434\u0438\u0430 \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b, \u0432\u044b\u0431\u0440\u0430\u0432 \u0423\u0434\u0430\u043b\u0438\u0442\u044c.

"},{"location":"admin-panel/page/options/","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u043e\u043f\u0446\u0438\u0438)","text":""},{"location":"admin-panel/page/options/#redaktor-optsii","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u043e\u043f\u0446\u0438\u0438)","text":"

\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u2014 \u044d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b), \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0442\u0435\u043c\u044b.

\u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439.

\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u041e\u043f\u0446\u0438\u0438 \u0432 \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 access.admin.super \u0438\u043b\u0438 access.admin.pages.list. \u0421\u043c. \u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0413\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0444\u043b\u0430\u0436\u043a\u0438 \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u0438 \u043f\u043e\u043b\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0415\u0441\u043b\u0438 \u0438\u0445 \u043d\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u0442\u044c, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u0443\u0441\u0442\u043e\u043c\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0438\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

"},{"location":"admin-panel/page/options/#publikatsiia","title":"\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f","text":"

\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448 \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c (\u0438\u043b\u0438 \u043e\u0442\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e) \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043c\u0435\u043d\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u044f\u0432\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 Publish: false \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 publish_date \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0438\u043b\u0438 unpublish_date \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c. \u0414\u0430\u0442\u0430 \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0430\u0442\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u0414\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u042d\u0442\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u0414\u0430\u0442\u0430 \u0441\u043d\u044f\u0442\u0438\u044f \u0441 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u042d\u0442\u043e \u0434\u0430\u0442\u0430/\u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430 \u043e\u0442\u043c\u0435\u043d\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u0430."},{"location":"admin-panel/page/options/#taksonomii","title":"\u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438","text":"

\u0412 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u00ab\u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438\u00bb \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0435\u0451 \u0442\u0435\u0433\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Category \u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0435 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. Tag \u0422\u0435\u0433\u0438 \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043e \u0447\u0435\u043c \u0432\u0430\u0448\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438. Month"},{"location":"admin-panel/page/options/#karta-saita","title":"\u041a\u0430\u0440\u0442\u0430 \u0441\u0430\u0439\u0442\u0430","text":"

\u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0438 \u0447\u0438\u0441\u0442\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0441\u0430\u0439\u0442\u0430 \u0432\u0430\u0436\u043d\u043e \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c. \u0421\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 - \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0438 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f (SEO). \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u0441\u0430\u0439\u0442\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u0440\u0435\u0439\u0442\u0438\u043d\u0433.

\u042d\u0442\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d Sitemap.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b \u0441\u0430\u0439\u0442\u0430 \u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b \u0441\u0430\u0439\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f: \u0435\u0436\u0435\u0447\u0430\u0441\u043d\u043e, \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e, \u0435\u0436\u0435\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e, \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u043e, \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u0430\u0440\u0442\u044b \u0441\u0430\u0439\u0442\u0430. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043a\u0430\u0440\u0442\u044b \u0441\u0430\u0439\u0442\u0430 \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0432\u0430\u0448\u0435\u0439 \u043a\u0430\u0440\u0442\u0435 \u0441\u0430\u0439\u0442\u0430."},{"location":"admin-panel/page/permissions/","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":""},{"location":"admin-panel/page/permissions/#razresheniia-stranitsy","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f/\u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 admin.configuration \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 admin.configuration.pages \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b admin.pages \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 admin.pages.create \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 admin.pages.read \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 admin.pages.update \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 admin.pages.delete \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u0421\u043f\u0438\u0441\u043e\u043a admin.pages.list \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0412\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 Grav \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043a\u0438 \u0438\u043b\u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0435 \u0435\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u043d \u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u0432\u0438\u0434\u044f\u0442 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435, \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0442\u0442\u0443\u0434\u0430.

\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Grav 1.7, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c CRUD \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0438\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u0441\u0430\u043c\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e true \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0417\u0430\u043f\u0440\u0435\u0442. \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e false \u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. \u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0435 \u0417\u0430\u043f\u0440\u0435\u0442. \u041d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e null \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430, \u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u0417\u0430\u043f\u0440\u0435\u0442, \u0435\u0441\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f.

\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043d\u0430\u0434 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0433\u0440\u0443\u043f\u043f\u044b. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0437\u0430\u0434\u0430\u043d\u043e \u0432 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u0430\u044f-\u043b\u0438\u0431\u043e \u0438\u0437 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0430 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u0430\u044f-\u043b\u0438\u0431\u043e \u0438\u0437 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e. \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e.

\u041f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u044f, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438. \u0412\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c.

"},{"location":"admin-panel/page/permissions/#rabochii-protsess-proverki-dostupa-k-stranitse-crud","title":"\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 CRUD","text":"

\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 CRUD \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:

  1. \u0417\u0430\u0434\u0430\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 = \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440, \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0421\u043f\u0438\u0441\u043e\u043a
  2. \u041f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439
  3. \u0438\u0449\u0435\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 authors, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0430\u0432\u0442\u043e\u0440\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b
  4. \u0438\u0449\u0435\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 defaults, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d
  5. \u0438\u0449\u0435\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u043e\u0439, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u043e\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u0443
  6. \u0435\u0441\u043b\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c
    • \u0435\u0441\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e: \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c false
    • \u0435\u0441\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e: \u0437\u0430\u0434\u0430\u0435\u043c \u0444\u043b\u0430\u0433 allow = true
  7. \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b
  8. \u041f\u0440\u043e\u0439\u0434\u044f \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435 \u0433\u0440\u0443\u043f\u043f\u044b, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435
  9. \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 allow \u0440\u0430\u0432\u0435\u043d true: \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c true
  10. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u0440\u0430\u0432\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437)
  11. \u0435\u0441\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0417\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e: \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c false
  12. \u0435\u0441\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e: \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c true
  13. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f
  14. \u0435\u0441\u043b\u0438 Inherit Permissions = Yes, \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0435 \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043b\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b
  15. \u0438\u043d\u0430\u0447\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c null
"},{"location":"admin-panel/page/permissions/#kornevaia-stranitsa","title":"\u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","text":"

\u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432 Grav 1.7+, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u0430\u0439\u0442\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u0415\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0421\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 user/pages/root.md \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 (\u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c).

"},{"location":"admin-panel/page/security/","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c)","text":""},{"location":"admin-panel/page/security/#redaktor-bezopasnost","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c)","text":"

\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043f\u0443\u043d\u043a\u0442\u0430 \u0432 \u043c\u0435\u043d\u044e \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Yes, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043c\u0435\u043d\u044e, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u043a \u043d\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f.. \u0414\u043e\u0441\u0442\u0443\u043f \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

CRUD ACL \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 authors \u0438 defaults, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0441\u043e\u0431\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0440\u0435\u0437\u0435\u0440\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u043e\u0448\u0435\u0434\u0448\u0438\u0445 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c ACL \u043e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0410\u0432\u0442\u043e\u0440\u044b \u0427\u043b\u0435\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0438\u043c\u0435\u044e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u00ab\u0410\u0432\u0442\u043e\u0440\u044b\u00bb. \u0413\u0440\u0443\u043f\u043f\u044b \u0427\u043b\u0435\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \u0438\u043c\u0435\u044e\u0442 \u043e\u0441\u043e\u0431\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f CRUD, \u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"admin-panel/plugins/","title":"\u041e\u0431\u0437\u043e\u0440","text":""},{"location":"admin-panel/plugins/#plaginy","title":"\u041f\u043b\u0430\u0433\u0438\u043d\u044b","text":"

\u0412 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435, \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.

\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044d\u0442\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u0430\u043a \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0441 \u043b\u0435\u0433\u043a\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435.

\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 access.admin.super \u0438\u043b\u0438 access.admin.plugins.

"},{"location":"admin-panel/plugins/#upravlenie","title":"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435","text":"

\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445.

\u041a\u043d\u043e\u043f\u043a\u0430 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0432\u0430\u0441 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 Grav, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0438\u0445 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445, \u0432\u044b\u0431\u0440\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u00bb \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u0417\u043d\u0430\u0447\u043e\u043a \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 Grav. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u043a\u0430 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.

"},{"location":"admin-panel/plugins/#ustanovlennye-plaginy","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b","text":"

\u0412 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0432\u044b\u0431\u0440\u0430\u0432 \u0437\u043d\u0430\u0447\u043e\u043a \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u0412\u044b\u0431\u043e\u0440 \u0437\u043d\u0430\u0447\u043a\u0430 \u0448\u0435\u0432\u0440\u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0430\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430, \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0435\u0433\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e \u0438 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u0443 readme \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e.

\u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

"},{"location":"admin-panel/plugins/options/","title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","text":""},{"location":"admin-panel/plugins/options/#parametry","title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","text":"

\u041f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041f\u043b\u0430\u0433\u0438\u043d\u044b. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u041f\u043b\u0430\u0433\u0438\u043d\u044b > Admin Panel \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u041e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

"},{"location":"admin-panel/plugins/options/#informatsiia-plagina","title":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":"

\u0412 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Admin Panel. \u042d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043d\u0430\u0439\u0442\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u043b\u044e\u0431\u044b\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445.

\u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

"},{"location":"admin-panel/plugins/options/#basics-osnovy","title":"Basics | \u041e\u0441\u043d\u043e\u0432\u044b","text":"

\u0420\u0430\u0437\u0434\u0435\u043b \u041e\u0441\u043d\u043e\u0432\u044b \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u0434\u043c\u0438\u043d\u043a\u043e\u0439. \u042d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.

\u041c\u044b \u0440\u0430\u0437\u0431\u0438\u043b\u0438 \u044d\u0442\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438 \u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0438\u0436\u0435.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043d\u0435 \u0432\u043b\u0438\u044f\u044e\u0449\u0435\u0435 \u043d\u0430 \u043a\u044d\u0448 CMS. Administrator Path \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0443\u0442\u0438 \u043a \u0430\u0434\u043c\u0438\u043d\u043a\u0435. \u041f\u0443\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - /admin, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u043b\u0435 \u0432\u0441\u0451, \u0447\u0442\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435. Logo Text \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. Body Classes \u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0443? \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u0442\u0435\u0433\u0430 body. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u0435\u043b \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f. Sidebar Activation \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0435\u0442\u043e\u0434\u044b ** Tab ** \u0438\u043b\u0438 ** Hover ** \u0434\u043b\u044f \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438. Hover Delay \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043d\u0430 \u0441\u0436\u0430\u0442\u0443\u044e \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Hover. Sidebar Size \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043b\u0438 \u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439. Edit Mode \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0438 \u042d\u043a\u0441\u043f\u0435\u0440\u0442. Use Google Fonts \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0448\u0440\u0438\u0444\u0442\u043e\u0432 Google. \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u044d\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Helvetica. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0441 \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438. Show GitHub Link \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 \u00ab\u041d\u0430\u0448\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443? \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0430 GitHub\u00bb. Automatically Check for Updates \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Admin Panel. Session Timeout \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u0439\u043c-\u0430\u0443\u0442 \u0441\u0435\u0430\u043d\u0441\u0430 (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445)."},{"location":"admin-panel/plugins/options/#dashboard-glavnaia-stranitsa-adminki","title":"Dashboard | \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Maintenance Widget \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435. Statistics Widget \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435. Notifications Feed Widget \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435. News Feed Widget \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041b\u0435\u043d\u0442\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435. Latest Pages Widget \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435."},{"location":"admin-panel/plugins/options/#notifications-uvedomleniia","title":"Notifications | \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f","text":"

\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043b\u0435\u043d\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445 \u0438/\u0438\u043b\u0438 \u0442\u0435\u043c\u0430\u0445.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Feed Notifications \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043b\u0435\u043d\u0442\u044b \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439. Dashboard Notifications \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430. Plugins Notifications \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. Themes Notifications \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043c ."},{"location":"admin-panel/plugins/options/#popularity-populiarnost","title":"Popularity | \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c","text":"

\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0435 \u0441 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Visitor tracking \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439. Days of stats \u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043d\u0435\u0439 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044f\u0445 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0434\u043e \u0438\u0445 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f. Ignore \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, /test' \u0438\u043b\u0438 '/modular"},{"location":"admin-panel/security/","title":"\u041e\u0431\u0437\u043e\u0440","text":""},{"location":"admin-panel/security/#bezopasnost","title":"\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c","text":"

Grav \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0449\u043d\u0443\u044e \u0437\u0430\u0449\u0438\u0442\u0443 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a\u0443\u044e \u200b\u200b\u043a\u0430\u043a \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0444\u043b\u0443\u0434\u0430.

"},{"location":"admin-panel/security/2fa/","title":"\u0414\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f","text":""},{"location":"admin-panel/security/2fa/#dvukhfaktornaia-autentifikatsiia","title":"\u0414\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f","text":"

\u0414\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f (2FA) - \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043c\u0435\u0440\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0430\u044f \u043c\u0435\u0442\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0441\u0442\u0438\u043b\u0435 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0448\u0435\u0441\u0442\u0438\u0437\u043d\u0430\u0447\u043d\u044b\u0435 \u043a\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443.

\u0427\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 2FA, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Authy \u0438\u043b\u0438 Google Authenticator. \u042d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u043a\u0430 \u043a\u043b\u044e\u0447\u0435\u0439 \u0434\u043b\u044f \u043a\u043e\u0434\u043e\u0432 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.

"},{"location":"admin-panel/security/2fa/#kak-eto-nastroit","title":"\u041a\u0430\u043a \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c","text":"

\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432 Grav \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e. \u0412\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u041f\u043b\u0430\u0433\u0438\u043d\u044b > Admin Panel > Basics \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.

\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0432\u044b\u0431\u0440\u0430\u0432 \u0414\u0430. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0430\u0432\u0430\u0442\u0430\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0417\u0430\u0442\u0435\u043c \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 2FA Enabled \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Yes.

QR-\u043a\u043e\u0434 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c 2FA. \u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u043b\u044e\u0447 \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043b\u044e\u0431\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0439\u0442\u0435 QR-\u043a\u043e\u0434 \u0438\u043b\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043b\u044e\u0447 2FA. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 2FA.

\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u044f\u0434\u043e\u043c \u0441 \u0432\u0430\u0448\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0430 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439 \u0437\u043d\u0430\u0447\u043e\u043a 2FA. \u042d\u0442\u043e\u0442 \u0437\u043d\u0430\u0447\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0439\u0442\u0438 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u0435 \u0436\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044f, \u043d\u043e \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u0432\u0435\u0434\u0435\u0442\u0435 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0435\u0441\u0442\u0438\u0437\u043d\u0430\u0447\u043d\u044b\u0439 \u043a\u043e\u0434. \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041e\u043d \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0435 30 \u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430. \u041d\u0430 \u0435\u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0443 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u0434.

\u042d\u0442\u043e \u043e\u043d\u043e! \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 Grav!

\u0414\u0430, \u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043b\u044e\u0447 2FA, \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043a\u0440\u0430\u0441\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 Regenerate.

"},{"location":"admin-panel/security/2fa/#chasto-zadavaemye-voprosy","title":"\u0427\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b","text":""},{"location":"admin-panel/security/2fa/#chto-proizoidet-esli-ia-poteriaiu-dostup-k-svoemu-ustroistvu-s-dvukhfaktornoi-autentifikatsiei","title":"\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u044f \u043f\u043e\u0442\u0435\u0440\u044f\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0441 \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439?","text":"

\u041d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c! \u0415\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043e.

\u0412\u0430\u0448 \u0441\u0442\u0430\u0442\u0443\u0441 2FA \u0438 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c YAML-\u0444\u0430\u0439\u043b\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0443\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f - admin, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a ROOT /user/accounts/admin.yaml \u0438 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u044d\u0442\u0438 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:

twofa_enabled: true\ntwofa_secret: RQX46XTTBK7QMMB6VR4RAUNWOYVXXTSR\n

\u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f twofa_enabled \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c twofa_secret, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0432\u0430\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438-\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0435.

"},{"location":"admin-panel/security/2fa/#chto-delat-esli-moi-kliuch-2fa-skomprometirovan","title":"\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u043c\u043e\u0439 \u043a\u043b\u044e\u0447 2FA \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d?","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0432\u0430\u0448 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 2FA \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d, \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u043d\u0430\u0436\u0430\u0432 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043a\u0440\u0430\u0441\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 Regenerate \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.

"},{"location":"admin-panel/security/rate-limiting/","title":"\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0444\u043b\u0443\u0434\u0430","text":""},{"location":"admin-panel/security/rate-limiting/#zashchita-ot-fluda","title":"\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0444\u043b\u0443\u0434\u0430","text":"

\u0410\u0442\u0430\u043a\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0433\u0440\u0443\u0431\u043e\u0439 \u0441\u0438\u043b\u044b \u2014 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u0434\u043b\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u0432. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0444\u043e\u0440\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u0438\u0437 \u0432\u0430\u0448\u0438\u0445 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c \u0441\u043d\u043e\u0432\u0430 \u0438 \u0441\u043d\u043e\u0432\u0430, \u043f\u043e\u043a\u0430 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043d\u0435 \u0434\u043e\u0431\u044c\u0435\u0442\u0441\u044f \u0443\u0441\u043f\u0435\u0445\u0430, \u0438\u043b\u0438 \u0431\u043e\u0442, \u043d\u0430\u0432\u043e\u0434\u043d\u044f\u044e\u0449\u0438\u0439 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u043c\u0438 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043f\u043e\u043a\u0430 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d.

\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0449\u0438\u0442\u044b Grav \u043e\u0442 \u0444\u043b\u0443\u0434\u0430 (\u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u043a \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438) \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0430\u0442\u0430\u043a\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0443\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u043a \u0443\u0447\u0435\u0442\u043d\u044b\u043c \u0437\u0430\u043f\u0438\u0441\u044f\u043c, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e.

"},{"location":"admin-panel/security/rate-limiting/#chto-vam-ponadobitsia","title":"\u0427\u0442\u043e \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f","text":"

\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Login. \u0422\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f Login \u0432\u0435\u0440\u0441\u0438\u0438 2.4 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435, Grav 1.3.3 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435 \u0438 Admin Panel 1.6.0 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435.

"},{"location":"admin-panel/security/rate-limiting/#kak-eto-nastroit","title":"\u041a\u0430\u043a \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c","text":"

\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0444\u043b\u0443\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Login. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043f\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Admin > \u041f\u043b\u0430\u0433\u0438\u043d\u044b > Login \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c.

\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

  • \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0431\u0440\u043e\u0441\u043e\u0432 \u043f\u0430\u0440\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u0434 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439.
  • \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f
  • \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432 \u0434\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438
  • \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u0438\u043b\u0438 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0437\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430. \u042d\u0442\u043e\u0442 \u0432\u044b\u0445\u043e\u0434 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0438 \u0434\u043b\u0438\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b.

"},{"location":"admin-panel/themes/","title":"\u0422\u0435\u043c\u044b","text":""},{"location":"admin-panel/themes/#temy","title":"\u0422\u0435\u043c\u044b","text":"

\u0422\u0435\u043c\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 - \u044d\u0442\u043e \u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u043a\u0443\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043c\u044b \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438.

\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0442\u0435\u043c\u0430\u043c\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043d\u0430 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442.

\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0442\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 access.admin.super \u0438\u043b\u0438access.admin.themes.

"},{"location":"admin-panel/themes/#upravlenie","title":"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435","text":"

\u0412 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0422\u0435\u043c\u044b \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u041d\u0430\u0437\u0430\u0434, \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438 \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.

\u041d\u0430\u0437\u0430\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u0440\u043d\u0435\u0442 \u0432\u0430\u0441 \u043b\u0438\u0431\u043e \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043b\u0438\u0431\u043e \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u0435\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0433\u043b\u0443\u0431\u0436\u0435 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043b\u0438\u0441\u044c \u0432 \u044d\u0442\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u043c\u044b \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.

"},{"location":"admin-panel/themes/#dobavlenie-novoi-temy","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b","text":"

\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0442\u0435\u043c Grav, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442. \u042d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443. \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.

\u0412\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442\u0435 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043c\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043b\u044e\u0431\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 blueprints. \u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0435\u043c\u0443 \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043d\u0430\u0436\u0430\u0432 \u043a\u0440\u0430\u0441\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0435\u043c\u0443 \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u043f\u0430\u043d\u0435\u043b\u0438.

"},{"location":"admin-panel/themes/#ustanovlennye-temy","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u043c\u044b","text":"

\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0442\u0435\u043c\u044b. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u044d\u0441\u043a\u0438\u0437\u0430 \u0442\u0435\u043c\u044b \u0432\u044b \u043f\u043e\u043f\u0430\u0434\u0435\u0442\u0435 \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b, \u0430 \u0441\u0435\u0440\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0438\u0437\u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u044b \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0442\u0435\u043c\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0442\u0435\u043c\u0430.

\u0412\u0432\u0435\u0440\u0445\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u0441\u043a\u0438\u0437\u0430 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u0435\u043c\u044b. \u0424\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439 \u0437\u043d\u0430\u0447\u043e\u043a \u0444\u043b\u0430\u0436\u043a\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0442\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 Grav. \u0422\u0435\u043c\u044b \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.

"},{"location":"admin-panel/tools/","title":"\u0421\u0435\u0440\u0432\u0438\u0441","text":""},{"location":"admin-panel/tools/#servis","title":"\u0421\u0435\u0440\u0432\u0438\u0441","text":"

\u0411\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0435\u043c\u0443 \u0438\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 Grav. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0435\u043c\u0430 \u043f\u0440\u0435\u043c\u0438\u0443\u043c-\u043a\u043b\u0430\u0441\u0441\u0430, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u0432 \u0432\u0438\u0434\u0435 zip-\u0444\u0430\u0439\u043b\u0430, \u0438\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u0432 \u0441\u0432\u043e\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 FTP, \u043d\u043e \u0430\u0434\u043c\u0438\u043d\u043a\u0430 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u041f\u0440\u044f\u043c\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0437\u0430\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u0432 \u0432\u0430\u0448\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav, \u0438 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u042d\u0442\u043e \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0438 \u0442\u0435\u043c\u0430\u043c\u0438. \u0412\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c Grav \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c (\u0438\u043b\u0438 \u043f\u043e\u043d\u0438\u0437\u0438\u0442\u044c), \u0441\u0434\u0435\u043b\u0430\u0432 \u044d\u0442\u043e. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 Grav, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443.

\u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043b\u044e\u0431\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 - \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0439 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav.

"},{"location":"admin-panel/tools/#ustanovka-paketa-cherez-priamuiu-zagruzku-zip-faila","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u044f\u043c\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 ZIP-\u0444\u0430\u0439\u043b\u0430","text":"

\u041f\u0435\u0440\u0432\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u044f\u043c\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u2014 \u044d\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c zip-\u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u0432 Grav, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u041e\u0431\u0437\u043e\u0440... (\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 zip-\u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445) \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u0430\u043a\u0435\u0442\u0430. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0444\u0430\u0439\u043b, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442.

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u0430\u0448 \u043f\u0430\u043a\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435. \u0412\u043e\u0442 \u0438 \u0432\u0441\u0451!

"},{"location":"admin-panel/tools/#ustanovka-paketa-cherez-udalennyi-url-adres","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441","text":"

\u0412\u0442\u043e\u0440\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0444\u0430\u0439\u043b \u043f\u0430\u043a\u0435\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0430\u043a\u0435\u0442, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0432\u0435\u0441\u0442\u0438 URL-\u0430\u0434\u0440\u0435\u0441 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u043f\u043e\u043b\u0435. \u0421\u0441\u044b\u043b\u043a\u0438 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0434\u043b\u044f GPM, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a https://getgrav.org/download/themes/bootstrap/1.6.0, \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 GPM. \u041d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u044e \u0422\u043e\u043b\u044c\u043a\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 GPM \u043d\u0430 \u041d\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 zip-\u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c\u0438 GPM. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: http://example.com/mypackage.zip. \u042d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u043a\u0430\u043a \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439.

"},{"location":"advanced/backups/","title":"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438","text":""},{"location":"advanced/backups/#rezervnye-kopii","title":"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438","text":"

\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Grav \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f Grav 1.6, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442:

  • \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 \u043d\u043e\u0432\u044b\u043c Grav Scheduler, \u0447\u0442\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0433\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435
  • \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 ** \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 **, \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0444\u0430\u0439\u043b\u043e\u0432, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0443\u0442\u0438 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f
  • \u041d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 number, space \u0438\u043b\u0438 time.
  • \u041d\u043e\u0432\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.
"},{"location":"advanced/backups/#konfiguratsiia","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"

\u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043e Grav 1.6, \u043e\u0434\u043d\u0430\u043a\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0432 5 \u0413\u0411 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (system/config/backups.yaml) \u0432 \u0432\u0430\u0448 user/config/

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0444\u0430\u0439\u043b user/config/backups.yaml \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.

\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f:

purge:\n    trigger: space\n    max_backups_count: 25\n    max_backups_space: 5\n    max_backups_time: 365\n\nprofiles:\n  -\n    name: 'Default Site Backup'\n    root: '/'\n    schedule: false\n    schedule_at: '0 3 * * *'\n    exclude_paths: \"/backup\\r\\n/cache\\r\\n/images\\r\\n/logs\\r\\n/tmp\"\n    exclude_files: \".DS_Store\\r\\n.git\\r\\n.svn\\r\\n.hg\\r\\n.idea\\r\\n.vscode\\r\\nnode_modules\"\n
"},{"location":"advanced/backups/#ochistka","title":"\u041e\u0447\u0438\u0441\u0442\u043a\u0430","text":"
  • space - \u0443\u0434\u0430\u043b\u0438\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f max_backups_space, \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u0413\u0411
  • time - \u0443\u0434\u0430\u043b\u0438\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438, \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043d\u0435\u0439. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f max_backups_time, \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u043c\u044b\u043c \u0432 \u0434\u043d\u044f\u0445.
  • number - \u0443\u0434\u0430\u043b\u0438\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u0441\u0432\u0435\u0440\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f max_backups_count.
"},{"location":"advanced/backups/#profili","title":"\u041f\u0440\u043e\u0444\u0438\u043b\u0438","text":"

\u041c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439. \u041f\u0440\u043e\u0444\u0438\u043b\u044c \u00ab\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u00bb \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Grav \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c schedule: true \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 schedule_at: \u0441 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c cron.

\u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:

profiles:\n  -\n    name: 'Default Site Backup'\n    root: /\n    exclude_paths: \"/backup\\r\\n/cache\\r\\n/images\\r\\n/logs\\r\\n/tmp\"\n    exclude_files: \".DS_Store\\r\\n.git\\r\\n.svn\\r\\n.hg\\r\\n.idea\\r\\n.vscode\\r\\nnode_modules\"\n    schedule: true\n    schedule_at: '0 4 * * *'\n  -\n    name: 'Pages Backup'\n    root: 'page://'\n    exclude_files: .git\n    schedule: true\n    schedule_at: '* 3 * * *'\n
"},{"location":"advanced/backups/#komanda-cli","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u0430 CLI","text":"

\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Cli Console -> Grav Command, \u043d\u043e \u0432\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e:

cd ~/workspace/portfolio\nbin/grav backup\n\nGrav Backup\n===========\n\nChoose a backup?\n  [0] Default Site Backup\n  [1] Pages Backup\n\nArchiving 36 files [===================================================] 100% < 1 sec Done...\n\n [OK] Backup Successfully Created: /users/joe/workspace/portfolio/backup/pages_backup--20190227120510.zip\n
"},{"location":"advanced/change-site-url/","title":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0430\u0439\u0442\u0430","text":""},{"location":"advanced/change-site-url/#izmenenie-url-adresa-saita","title":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0430\u0439\u0442\u0430","text":"

\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 custom_base_url \u0432 system.yaml (\u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445, \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435), \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0435\u0440\u0436\u0430\u0442\u044c Grav \u0432 \u043f\u0430\u043f\u043a\u0435, \u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0434\u043e\u043c\u0435\u043d\u0430.

"},{"location":"advanced/change-site-url/#stsenarii-1-zapusk-v-kornevoi-papke-domena","title":"\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 1, \u0437\u0430\u043f\u0443\u0441\u043a \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0434\u043e\u043c\u0435\u043d\u0430","text":"

Grav \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 http://localhost:8080/grav-develop, \u043d\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u043d\u0430 http://localhost: 8080

\u0412 system.yaml \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435

custom_base_url: 'http://localhost:8080'\n

\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u0441\u0435\u0430\u043d\u0441\u0430 \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043f\u0443\u0442\u0438 \u043a \u0441\u0430\u0439\u0442\u0443 Grav:

session:\n  path: /\n

\u0418 \u0432 \u043a\u043e\u0440\u043d\u0435 \u0434\u043e\u043c\u0435\u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441 .htaccess:

RewriteEngine On\nRewriteCond %{REQUEST_URI} !^/grav-develop/\nRewriteRule ^(.*)$ /grav-develop/$1\n

\u0433\u0434\u0435 grav-develop \u2014 \u044d\u0442\u043e \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f Grav.

"},{"location":"advanced/change-site-url/#stsenarii-2-zapustit-v-drugoi-podpapke","title":"\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 2, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0435","text":"

Grav \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 http://localhost:8080/grav-develop, \u043d\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u043d\u0430 http://localhost:8080/xxxxx.

\u0412 system.yaml \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435

custom_base_url: 'http://localhost:8080/xxxxx'\n

\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u0441\u0435\u0430\u043d\u0441\u0430 \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043f\u0443\u0442\u0438 \u043a \u0441\u0430\u0439\u0442\u0443 Grav:

session:\n  path: /xxxxx\n

\u0418 \u0432 \u043d\u043e\u0432\u043e\u0439 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 /xxxxx \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441 .htaccess:

RewriteEngine On\nRewriteCond %{REQUEST_URI} !^/grav-develop/\nRewriteRule ^(.*)$ /grav-develop/$1\n

\u0433\u0434\u0435 grav-develop \u2014 \u044d\u0442\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u044f\u044f \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f Grav.

"},{"location":"advanced/debugging/","title":"\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0438 \u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430","text":""},{"location":"advanced/debugging/#otladka-i-vedenie-zhurnala","title":"\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0438 \u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430","text":"

\u041f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u0435\u043c \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0447\u0430\u0441\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. Grav \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u043c\u043e\u0449\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439:

"},{"location":"advanced/debugging/#panel-otladki","title":"\u041f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438","text":"

Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c, \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044e\u0449\u0438\u043c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043b\u0438\u0431\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e, \u043b\u0438\u0431\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 system.yaml:

debugger:\n  enabled: true                        # \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a Grav \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\n  provider: debugbar                   # \u0417\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438\n  shutdown:\n    close_connection: true             # \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c onShutdown(). `false` \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438\n

\u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u043a\u0430 Grav \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u043b\u0435\u0432\u043e\u043c \u0443\u0433\u043b\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043d\u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438.

\u041f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 PHP \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0441 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439.

\u041f\u0435\u0440\u0432\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Grav, \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0432 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430.

\u041d\u0430\u0440\u044f\u0434\u0443 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0417\u0430\u043f\u0440\u043e\u0441, \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 Grav \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0448\u043a\u0430\u043b\u0430:

"},{"location":"advanced/debugging/#komanda-dampa-dlia-php","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u0430\u043c\u043f\u0430 \u0434\u043b\u044f PHP","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e PHP, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435, \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0449\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 dump(). \u041e\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e PHP \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0438 \u0440\u0430\u0441\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 PHP:

<?php\ndump($myvariable);\n

\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0441\u0432\u043e\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435:

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:

<?php\n$this->grav['debugger']->addMessage($myvariable)\n
"},{"location":"advanced/debugging/#komanda-dampa-dlia-twig","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u0430\u043c\u043f\u0430 \u0434\u043b\u044f Twig","text":"

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 Twig \u0438\u0437 \u0432\u0430\u0448\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043b\u0438\u0431\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e, \u043b\u0438\u0431\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 system.yaml:

twig:\n  debug: true # \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a Twig\n

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 Twig:

{{ dump(page.header) }}\n

\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438:

\u041c\u043e\u0436\u043d\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u0430\u043c\u043f\u0430, \u043d\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

{{ dump('page.header output:',page.header) }}\n
"},{"location":"advanced/debugging/#damp-v-konsol-brauzera-iz-twig","title":"\u0414\u0430\u043c\u043f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438\u0437 Twig","text":"

\u0414\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430 Grav, \u0438\u043b\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 AJAX, \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 Javascript, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

<script> console.log({{ page.header | json_encode | raw }}) </script>\n

\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430:

"},{"location":"advanced/debugging/#otobrazhenie-oshibok","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a","text":"

\u041d\u0430 \u043d\u0430\u0448\u0435\u0439 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u043b\u043e\u043a\u0438 \u043a\u043e\u0434\u0430. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c, \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 Grav 1.0+ \u043e\u043d\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0445, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043e\u043a \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438:

errors:\n  display: true\n

\u0414\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0447\u0435\u0433\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u043d\u043a\u043e\u0433\u043e, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0444\u0430\u0439\u043b\u0435 user/config/system.yaml \u0438 \u043f\u043e\u043b\u0430\u0433\u0430\u044f\u0441\u044c \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435:

errors:\n  display: false\n  log: true\n

"},{"location":"advanced/debugging/#logirovanie","title":"\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","text":"

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439, \u0438, \u043e\u043f\u044f\u0442\u044c \u0436\u0435, Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0438 \u043c\u043e\u0449\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u0432:

$this->grav['log']->info('My informational message');\n$this->grav['log']->notice('My notice message');\n$this->grav['log']->debug('My debug message');\n$this->grav['log']->warning('My warning message');\n$this->grav['log']->error('My error message');\n$this->grav['log']->critical('My critical message');\n$this->grav['log']->alert('My alert message');\n$this->grav['log']->emergency('Emergency, emergency, there is an emergency here!');\n

\u0412\u0441\u0451 \u0432\u0430\u0448\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u0444\u0430\u0439\u043b /logs/grav.log.

"},{"location":"advanced/environment-config/","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f","text":""},{"location":"advanced/environment-config/#konfiguratsiia-okruzheniia","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f","text":"

Grav \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u043c\u043e\u0449\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0440\u0435\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430.

\u0421\u0440\u0435\u0434\u044b \u0434\u043e Grav 1.6 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 user/. Grav 1.7 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u0441\u0440\u0435\u0434\u0443 \u0432 user/env/, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u044b. \u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0440\u0435\u0434\u044b \u0432 \u044d\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0430\u0439\u0442\u0430\u0445.

"},{"location":"advanced/environment-config/#avtomaticheskaia-nastroika-okruzheniia","title":"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f","text":"

\u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u0441\u0440\u0435\u0434\u0443, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u0425\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u041f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u043e\u0432\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 system/config/system.yaml, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:

user/config/system.yaml\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0451, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b user/config/system.yaml, \u043e\u0434\u043d\u0430\u043a\u043e \u043b\u0443\u0447\u0448\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c enabled \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u0447\u0435\u0440\u0435\u0437 localhost, \u043d\u043e disabled \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435.

\u042d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f, \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 \u0444\u0430\u0439\u043b\u0435:

user/env/localhost/config/system.yaml\n

\u0433\u0434\u0435 localhost - \u044d\u0442\u043e \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430 \u0441\u0440\u0435\u0434\u044b (\u044d\u0442\u043e \u0445\u043e\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0432\u0432\u043e\u0434\u0438\u0442\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, http://localhost/your-site), \u0430 \u0432\u0430\u0448 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

debugger:\n  enabled: true\n

\u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS, Link, JS \u0438 JS-\u043c\u043e\u0434\u0443\u043b\u0435\u0439 (\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 + \u043c\u0438\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f) \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 (user/env/www.mysite.com/config/system.yaml):

assets:\n  css_pipeline: true\n  js_pipeline: true\n  js_module_pipeline: true\n

\u0415\u0441\u043b\u0438 \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 http://www.mysite.com, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0443\u044e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u0439\u043b\u0430, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 user/env/www.mysite.com/config/system.yaml.

\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 system.yaml, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 Grav \u0432site.yaml \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430!

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a, \u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0440\u0435\u0434\u0443 localhost \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0435\u0451 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.

"},{"location":"advanced/environment-config/#pereopredeleniia-plaginov","title":"\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 YAML-\u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0447\u0442\u043e \u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0415\u0441\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432:

user/config/plugins/email.yaml\n

\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:

user/env/localhost/config/plugins/email.yaml\n

\u0421 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439:

mailer:\n  engine: smtp\n  smtp:\n    server: smtp.mailtrap.io\n    port: 2525\n    encryption: none\n    user: '9a320798e65135'\n    password: 'a13e6e27bc7205'\n
"},{"location":"advanced/environment-config/#pereopredeleniia-tem","title":"\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043c","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0435\u043c\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

user/config/themes/antimatter.yaml\n

\u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u0441\u0440\u0435\u0434\u044b, \u0441\u043a\u0430\u0436\u0435\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 (http://www.mysite.com):

user/env/www.mysite.com/config/themes/antimatter.yaml\n
"},{"location":"advanced/environment-config/#konfiguratsiia-sredy-na-osnove-servera","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","text":"

\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Grav 1.7, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412 \u044d\u0442\u043e\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043b\u0438 \u0438\u0437 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0434\u043e Grav, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f.

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443 - \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GRAV_ENVIRONMENT. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 GRAV_ENVIRONMENT \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0434\u043e\u043c\u0435\u043d\u043e\u043c \u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e.

\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (development):

Apache 2NGINX php-fpmNGINX php-cgiDockerPHP
<VirtualHost 127.0.0.1:80>\n    ...\n\n    SetEnv GRAV_ENVIRONMENT development\n</VirtualHost>\n
location / {\n    ...\n\n    fastcgi_param GRAV_ENVIRONMENT development;\n}\n
location / {\n    ...\n\n    env[GRAV_ENVIRONMENT] = development\n}\n
web:\nenvironment:\n    - GRAV_ENVIRONMENT=development\n
<?php\n// Set environment in setup.php or make sure it runs before Grav.\ndefine('GRAV_ENVIRONMENT', 'development');\n
"},{"location":"advanced/environment-config/#polzovatelskie-puti-k-srede","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0443\u0442\u0438 \u043a \u0441\u0440\u0435\u0434\u0435","text":"

\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Grav 1.7, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u0446\u0438\u0439. \u0415\u0441\u0442\u044c \u0434\u0432\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438: \u043b\u0438\u0431\u043e \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0435 \u043e\u0431\u0449\u0435\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0440\u0435\u0434, \u043b\u0438\u0431\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0438\u0445 \u043e\u0434\u043d\u0443 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u0439.

"},{"location":"advanced/environment-config/#polzovatelskoe-raspolozhenie-dlia-vsekh-sred","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0440\u0435\u0434","text":"

\u0415\u0441\u043b\u0438 \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e user/env \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f GRAV_ENVIRONMENTS_PATH.

\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 GRAV_ENVIRONMENTS_PATH \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043f\u0443\u0442\u0435\u043c \u0432 GRAV_ROOT. \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0443\u044e \u043a\u043e\u0441\u0443\u044e \u0447\u0435\u0440\u0442\u0443.

\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0441\u0435 \u0441\u0440\u0435\u0434\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0432 user/sites/GRAV_ENVIRONMENT, \u0433\u0434\u0435 GRAV_ENVIRONMENT \u043b\u0438\u0431\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:

Apache 2NGINX php-fpmNGINX php-cgiDockerPHP
<VirtualHost 127.0.0.1:80>\n    ...\n\n    SetEnv GRAV_ENVIRONMENTS_PATH user://sites\n</VirtualHost>\n
location / {\n    ...\n\n    fastcgi_param GRAV_ENVIRONMENTS_PATH user://sites;\n}\n
location / {\n    ...\n\n    env[GRAV_ENVIRONMENTS_PATH] = user://sites\n}\n
web:\nenvironment:\n    - GRAV_ENVIRONMENTS_PATH=user://sites\n
<?php\n// Set environments path in setup.php or make sure that the following code runs before Grav.\ndefine('GRAV_ENVIRONMENTS_PATH', 'user://sites');\n
"},{"location":"advanced/environment-config/#polzovatelskoe-mestopolozhenie-dlia-tekushchei-sredy","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b

\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 GRAV_ENVIRONMENT_PATH \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043f\u0443\u0442\u0435\u043c \u0432 GRAV_ROOT. \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0443\u044e \u043a\u043e\u0441\u0443\u044e \u0447\u0435\u0440\u0442\u0443.

\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 user/development:

Apache 2NGINX php-fpmNGINX php-cgiDockerPHP
<VirtualHost 127.0.0.1:80>\n    ...\n\n    SetEnv GRAV_ENVIRONMENT_PATH user://development\n</VirtualHost>\n
location / {\n    ...\n\n    fastcgi_param GRAV_ENVIRONMENT_PATH user://development;\n}\n
location / {\n    ...\n\n    env[GRAV_ENVIRONMENT_PATH] = user://development\n}\n
web:\nenvironment:\n    - GRAV_ENVIRONMENT_PATH=user://development\n
<?php\n// Set environment path in setup.php or make sure that the following code runs before Grav.\ndefine('GRAV_ENVIRONMENT_PATH', 'user://development');\n

\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e GRAV_ENVIRONMENT_PATH \u043e\u0442\u0434\u0435\u043b\u0435\u043d \u043e\u0442 GRAV_ENVIRONMENT, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043c\u044f \u0441\u0440\u0435\u0434\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u043e \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0434\u043e\u043c\u0435\u043d\u0430.

"},{"location":"advanced/environment-config/#dalneishaia-nastroika","title":"\u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":"

\u0421\u0440\u0435\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0430\u0439\u0442\u0430.

"},{"location":"advanced/flex/","title":"\u041e\u0431\u0437\u043e\u0440","text":""},{"location":"advanced/flex/#obekty-flex","title":"\u041e\u0431\u044a\u0435\u043a\u0442\u044b Flex","text":"

\u041e\u0431\u044a\u0435\u043a\u0442\u044b Flex \u044d\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0432 Grav 1.7, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Flex Objects, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0434\u043b\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u042d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u043b\u0438 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0432 \u043d\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.

\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Grav, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u044b \u0432 Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0445\u043e\u0442\u044f \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u0438.

Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Flex Directories. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u043d\u0435\u043d \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Flex Objects.

"},{"location":"advanced/flex/#vvedenie","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":"

Flex \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430. Grav \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 Grav. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Flex Objects \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438.

"},{"location":"advanced/flex/#flex","title":"Flex","text":"

Flex \u044d\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432.

\u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u0435\u0434\u0438\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 Flex. This makes all the objects available to every page and plugin in your site.

\u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Flex \u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Flex \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b, \u0432\u044b \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u043c Flex \u043a\u0430\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435, \u0442\u0430\u043a \u0438 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

"},{"location":"advanced/flex/#tip-flex","title":"\u0422\u0438\u043f Flex","text":"

\u0422\u0438\u043f Flex \u044d\u0442\u043e \u0447\u0435\u0440\u0442\u0435\u0436 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.

\u041e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0444\u0430\u0439\u043b\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0438 \u0434\u0430\u0436\u0435 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f.

"},{"location":"advanced/flex/#flex-katalog","title":"Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433","text":"

Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e Flex-\u0442\u0438\u043f\u0430.

\u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443.

"},{"location":"advanced/flex/#kollektsiia-flex","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f Flex","text":"

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f Flex \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u044b.

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

"},{"location":"advanced/flex/#obekt-flex","title":"\u041e\u0431\u044a\u0435\u043a\u0442 Flex","text":"

\u041e\u0431\u044a\u0435\u043a\u0442 Flex \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c \u043d\u0435\u043a\u043e\u0435\u0433\u043e Flex-\u0442\u0438\u043f\u0430.

\u041e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0435\u0434\u0438\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c. \u041e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0438\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043b\u044e\u0431\u044b\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u041c\u0435\u0434\u0438\u0430. \u041e\u0431\u044a\u0435\u043a\u0442 \u0442\u0430\u043a\u0436\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u044f \u0438\u043b\u0438 \u043a\u0430\u043a\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e. \u0422\u0430\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c.

"},{"location":"advanced/flex/#indeks-flex","title":"\u0418\u043d\u0434\u0435\u043a\u0441 Flex","text":"

\u0418\u043d\u0434\u0435\u043a\u0441 Flex \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443.

\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex, \u043d\u043e \u043d\u0435 \u0441\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.

"},{"location":"advanced/flex/#khranilishche-flex","title":"\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Flex","text":"

\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Flex \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0435\u043c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.

\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b, \u043d\u0430\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0438\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 \u043f\u0430\u043f\u043e\u043a. Flex \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"advanced/flex/#forma-flex","title":"\u0424\u043e\u0440\u043c\u0430 Flex","text":"

\u0424\u043e\u0440\u043c\u0430 Flex \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u043b\u0430\u0433\u0438\u043d Form \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u044b.

Flex \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

"},{"location":"advanced/flex/#administrirovanie-flex","title":"\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Flex","text":"

\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Flex \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Flex Objects.

\u041e\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u0430\u0439\u0442\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 Flex. \u041a\u0430\u0436\u0434\u044b\u0439 Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c ACL \u0442\u0438\u043f\u0430 CRUD, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u043c \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0432 \u043d\u0438\u0445 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.

"},{"location":"advanced/flex/#tekushchie-ogranicheniia","title":"\u0422\u0435\u043a\u0443\u0449\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f","text":"

\u0412\u043f\u0435\u0440\u0435\u0434\u0438 \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b. \u0412\u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex:

  • \u041c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0442\u0430\u043a\u0436\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u0430
  • \u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0438\u043c\u0435\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e; \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0432\u0430\u0448\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f
  • \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435
  • \u0418\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Flex \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f
  • \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0442\u0438\u043f\u0430 Flex \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432
"},{"location":"advanced/flex/administration/","title":"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435","text":""},{"location":"advanced/flex/administration/#upravlenie","title":"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435","text":"

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Grav 1.7 \u0432\u044b \u0443\u0436\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\u0435 Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0421\u0430\u043c\u044b\u043c\u0438 \u043b\u0443\u0447\u0448\u0438\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Flex \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043b\u0438\u0431\u043e \u0432 \u043c\u0435\u043d\u044e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438, \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.

\u041f\u043b\u0430\u0433\u0438\u043d Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438.

"},{"location":"advanced/flex/administration/#vkliuchenie-kataloga","title":"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430","text":"

\u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u041f\u043b\u0430\u0433\u0438\u043d\u044b > Flex Objects.

\u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Directories \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u0432\u0430\u0441 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e.

\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0421\u043c. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.

"},{"location":"advanced/flex/administration/#spisok-katalogov","title":"\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435.

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 Flex \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"advanced/flex/administration/#elementy-upravleniia","title":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f","text":"

\u0412 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.

  • Back: \u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0430\u0434\u043c\u0438\u043d\u043a\u0438
  • Configure: \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u041f\u043b\u0430\u0433\u0438\u043d\u044b > Flex Objects, \u0441\u043c. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430
"},{"location":"advanced/flex/administration/#katalogi","title":"\u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0438","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432\u044b \u043f\u043e\u043f\u0430\u0434\u0435\u0442\u0435 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430.

\u0412 \u0421\u043f\u0438\u0441\u043a\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u041f\u043e\u0438\u0441\u043a \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u041f\u043e\u0440\u044f\u0434\u043e\u043a. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043c\u0435\u0435\u0442 \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0438 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0420\u044f\u0434\u043e\u043c \u0441 \u043d\u0438\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0432\u0441\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.

\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.

\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0447\u0438\u0441\u043b\u043e \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.

"},{"location":"advanced/flex/administration/configuration/","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":""},{"location":"advanced/flex/administration/configuration/#nastroika","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":"

\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0431\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.

\u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0430\u043a\u0435\u0442\u043e\u0432.

\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u044d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435.

"},{"location":"advanced/flex/administration/configuration/#elementy-upravleniia","title":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f","text":"

\u0412\u0432\u0435\u0440\u0445\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.

  • \u041d\u0430\u0437\u0430\u0434: \u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430
  • \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c: \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430
"},{"location":"advanced/flex/administration/configuration/#vkladka-keshirovanie","title":"\u0412\u043a\u043b\u0430\u0434\u043a\u0430 \u00ab\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb","text":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Enable Index Caching \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0437\u0430 \u0441\u0447\u0451\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. Index Cache Lifetime (seconds) \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. Enable Object Caching \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. Object Cache Lifetime (seconds) \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. Enable Render Caching \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e HTML. Render Cache Lifetime (seconds) \u0421\u0440\u043e\u043a \u0441\u043b\u0443\u0436\u0431\u044b \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445.

\u0415\u0441\u043b\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 HTML-\u043a\u043e\u0434 \u0438\u043c\u0435\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043a\u0435\u0448 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e {% do block.disableCache() %}.

"},{"location":"advanced/flex/administration/introduction/","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":""},{"location":"advanced/flex/administration/introduction/#vvedenie","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":"

\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438 \u043a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 Grav. \u0412 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Flex Objects \u0432 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445.

"},{"location":"advanced/flex/administration/introduction/#vkliuchenie-kataloga","title":"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430","text":"

\u0427\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u041f\u043b\u0430\u0433\u0438\u043d\u044b > Flex Objects.

\u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Directories (\u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0438), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 Flex. \u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u043f\u0446\u0438\u044f Enabled (\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e) \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u0430.

\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u0438 \u043d\u0430\u0436\u043c\u0435\u043c \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0432\u0435\u0440\u0445\u0443.

\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u0432 \u043c\u0435\u043d\u044e \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b.

"},{"location":"advanced/flex/administration/introduction/#ustanovka-demo-dannykh-neobiazatelno","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0435\u043c\u043e-\u0434\u0430\u043d\u043d\u044b\u0445 (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)","text":"

\u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432:

$ cp user/plugins/flex-objects/data/flex-objects/contacts.json user/data/flex-objects/contacts.json\n
"},{"location":"advanced/flex/administration/introduction/#sozdanie-stranitsy","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:

  • \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b: Flex-Objects
  • \u0428\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b: Flex-objects

\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c.

\u0412 \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442:

  • Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433: Contacts
  • \u041a\u043e\u043d\u0442\u0435\u043d\u0442:
    # Directory Example\n

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0432\u0435\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c.

\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u043a\u0430\u0436\u0435\u0442\u0435 Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.

"},{"location":"advanced/flex/administration/introduction/#otobrazhenie-stranitsy","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0432\u0430\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b:

\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

"},{"location":"advanced/flex/administration/views-edit/","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430","text":""},{"location":"advanced/flex/administration/views-edit/#redaktor-kontenta","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430","text":"

\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u2014 \u043c\u043e\u0449\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 Flex, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0442\u0438\u043f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430.

\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u043c\u0438 \u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0444\u043e\u0440\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b \u0434\u043b\u044f \u0442\u0438\u043f\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0435.

"},{"location":"advanced/flex/administration/views-edit/#elementy-upravleniia","title":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f","text":"

\u0412 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u043a\u043d\u043e\u043f\u043a\u0438: \u041d\u0430\u0437\u0430\u0434, \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u0423\u0434\u0430\u043b\u0438\u0442\u044c. \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440, \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0438 \u0442. \u0434...

  • \u041d\u0430\u0437\u0430\u0434: \u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430
  • \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c: \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430
  • \u0423\u0434\u0430\u043b\u0438\u0442\u044c: \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430
"},{"location":"advanced/flex/administration/views-edit/#redaktirovanie-formy","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u044b","text":"

\u0424\u043e\u0440\u043c\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u043c \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.

  • \u041f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b
  • \u041c\u0435\u0434\u0438\u0430 (\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0430\u0439\u043b\u044b)
"},{"location":"advanced/flex/administration/views-list/","title":"\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430","text":""},{"location":"advanced/flex/administration/views-list/#spisok-kontenta","title":"\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430","text":"

\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u0431\u0438\u0442\u044b\u0439 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u0442\u0438\u043f\u0430 \u0421\u0442\u0440\u0430\u043d\u0438\u0446, \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434.

\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u043e\u0449\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u041f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.

"},{"location":"advanced/flex/administration/views-list/#elementy-upravleniia","title":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f","text":"

\u0412\u0432\u0435\u0440\u0445\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0438\u043f\u0430 Flex, \u043d\u043e \u0432\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445:

  • \u041d\u0430\u0437\u0430\u0434: \u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u0432\u0435\u0440\u0445, \u043e\u0431\u044b\u0447\u043d\u043e \u0432 \u0414\u0430\u0448\u0431\u043e\u0440\u0434 \u0438\u043b\u0438 \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432
  • \u042d\u043a\u0441\u043f\u043e\u0440\u0442: \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0432 \u0444\u0430\u0439\u043b, \u043e\u0431\u044b\u0447\u043d\u043e \u0432 CSV
  • \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c: \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e
  • \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430: \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430
"},{"location":"advanced/flex/administration/views-list/#navigatsiia","title":"\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f","text":"
  • \u0424\u0438\u043b\u044c\u0442\u0440: \u0412\u0432\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430
  • \u041a\u043e\u043b-\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432: \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f
  • \u041f\u043e\u0440\u044f\u0434\u043e\u043a: \u0429\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u043e\u043b\u0431\u0446\u0430, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a.
  • \u041f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f: \u0411\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c
"},{"location":"advanced/flex/administration/views-list/#odna-stroka","title":"\u041e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430","text":"
  • \u0421\u0442\u043e\u043b\u0431\u0446\u044b: \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432
  • \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f: \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043e\u0431\u044b\u0447\u043d\u043e: \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440, \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0423\u0434\u0430\u043b\u0438\u0442\u044c...
"},{"location":"advanced/flex/custom-types/","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432","text":""},{"location":"advanced/flex/custom-types/#polzovatelskie-tipy-katalogov","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432","text":"

\u0414\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 Flex \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438, \u043d\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043d\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 Flex \u0440\u0435\u0448\u0430\u044e\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0437\u0430 \u0432\u0430\u0441. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0442\u0438\u043f\u044b Flex \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0431\u0449\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043a \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Flex. \u0423 \u0432\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u0441\u0430\u0439\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0437 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u043b\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0430\u0439\u0442\u0435. \u042d\u0442\u0438 \u0444\u043e\u0440\u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Flex.

\u041e\u0441\u043d\u043e\u0432\u043e\u0439 Flex-\u0442\u0438\u043f\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u0447\u0435\u0440\u0442\u0435\u0436. \u0427\u0435\u0440\u0442\u0435\u0436 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u0443, \u0442\u0430\u043a \u0438 \u043f\u043e\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438 \u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 ACL.

"},{"location":"advanced/flex/custom-types/blueprint/","title":"\u0427\u0435\u0440\u0442\u0451\u0436","text":""},{"location":"advanced/flex/custom-types/blueprint/#chertezh","title":"\u0427\u0435\u0440\u0442\u0451\u0436","text":"

\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0447\u0435\u0440\u0442\u0435\u0436\u0430 Flex \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 title,description \u0438 type, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0442\u0438\u043f, \u0438 \u0442\u0440\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0430: config, blueprints \u0438 form, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0442\u0438\u043f\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.

\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 contacts.yaml:

title: Contacts\ndescription: Simple contact directory with tags.\ntype: flex-objects  # do not change\n\n# Flex Configuration\nconfig: {}\n\n# Flex Directory Forms\nblueprints: {}\n\n# Flex Object Form\nform: {}\n

\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u0432\u0430\u0448\u0435\u043c\u0443 type (\u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430) \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044ftitle \u0438 description.

\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0431\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0444\u043e\u0440\u043c\u044b, \u043b\u0438\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0444\u0430\u0439\u043b.

\u041c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0438 \u0447\u0435\u0440\u0442\u0435\u0436\u0438.

\u041b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u044b. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0440\u0430\u0437\u0434\u0435\u043b \u0444\u043e\u0440\u043c\u044b process, \u043e\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Flex.

"},{"location":"advanced/flex/custom-types/blueprint/#sektsiia-form","title":"\u0421\u0435\u043a\u0446\u0438\u044f Form","text":"

\u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c\u0438 \u0440\u0430\u0437\u0434\u0435\u043b \u0444\u043e\u0440\u043c\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:

# Flex Object Form\nform:\n  validation: loose\n\n  fields:\n    published:\n      type: toggle\n      label: Published\n      highlight: 1\n      default: 1\n      options:\n        1: PLUGIN_ADMIN.YES\n        0: PLUGIN_ADMIN.NO\n      validate:\n        type: bool\n        required: true\n\n    last_name:\n      type: text\n      label: Last Name\n      validate:\n        required: true\n\n    first_name:\n      type: text\n      label: First Name\n      validate:\n        required: true\n\n    email:\n      type: email\n      label: Email Address\n      validate:\n        required: true\n\n    website:\n      type: url\n      label: Website URL\n\n    tags:\n      type: selectize\n      size: large\n      label: Tags\n      classes: fancy\n      validate:\n        type: commalist\n

\u0424\u043e\u0440\u043c\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0431\u044b\u043b\u0430 \u043b\u0438 \u043e\u043d\u0430 \u0432\u0437\u044f\u0442\u0430 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u043b\u0438 \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0442\u0435\u043c\u044b. \u042d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u043b\u0430\u043d \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u0438 \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u043b\u044f, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435. \u041f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043a\u0430\u043a \u043e \u0444\u043e\u0440\u043c\u0435, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443.

\u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0434\u043b\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0430 Flex. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0443\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u2014 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c, \u0442\u0430\u043a \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.

\u041c\u044b \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438. \u0415\u0441\u0442\u044c \u0435\u0449\u0451 \u0434\u0432\u0435 \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b: \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u00ab\u0421\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432\u00bb. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0442\u043e, \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 config.

"},{"location":"advanced/flex/custom-types/blueprint/#sektsiia-config","title":"\u0421\u0435\u043a\u0446\u0438\u044f Config","text":"

\u0420\u0430\u0437\u0434\u0435\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u2014 \u0441\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436\u0430 Flex, \u0445\u043e\u0442\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u044b data, admin \u0438 site.

# Flex Configuration\nconfig:\n\n  # Data Settings\n  data: {}\n\n  # Admin Settings\n  admin: {}\n\n  # Site Settings\n  site: {}\n

\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

# Flex Configuration\nconfig:\n\n  # Data Settings\n  data:\n    storage: user-data://flex-objects/contacts.json\n\n  # Admin Settings\n  admin:\n    # List view\n    list:\n      # List of fields to display\n      fields:\n        last_name:\n          link: edit # Edit link\n        first_name:\n          link: edit # Edit link\n        email:\n        website:\n

\u0412 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u0430: config.data.storage \u0438 config.admin.list.fields. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044f, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f.

"},{"location":"advanced/flex/custom-types/blueprint/#config-data","title":"Config > Data","text":"

Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043a\u043b\u0430\u0441\u0441\u044b object, collection \u0438 index \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 (storage) \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u0430\u0448\u0438\u043c\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438. \u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00ab\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f\u00bb (ordering) \u0438 \u00ab\u043f\u043e\u0438\u0441\u043a\u0430\u00bb (search).

config:\n  data:\n    # Flex Object Class\n    object: CLASSNAME\n    # Flex Collection Class\n    collection: CLASSNAME\n    # Flex Index Class\n    index: CLASSNAME\n    # Storage Options\n    storage: {}\n    # Ordering Options\n    ordering: {}\n    # Search Options\n    search: {}\n

\u041e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0438 \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0438\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u0415\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b, Grav \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:

config:\n  data:\n    object: 'Grav\\Common\\Flex\\Types\\Generic\\GenericObject'\n    collection: 'Grav\\Common\\Flex\\Types\\Generic\\GenericCollection'\n    index: 'Grav\\Common\\Flex\\Types\\Generic\\GenericIndex'\n

\u042d\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0442\u0438\u043f\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0432 \u044d\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0437\u0434\u0435\u0441\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b.

\u041e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 - \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0433\u0434\u0435 \u0438 \u043a\u0430\u043a \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435:

config:\n  data:\n    storage:\n      class: 'Grav\\Framework\\Flex\\Storage\\SimpleStorage'\n      options:\n        formatter:\n          class: 'Grav\\Framework\\File\\Formatter\\JsonFormatter'\n        folder: user-data://flex-objects/contacts.json\n

\u0412\u044b\u0448\u0435 \u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u0440\u0430\u0442\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0435:

config:\n  data:\n    storage: user-data://flex-objects/contacts.json\n

Grav 1.7 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 3 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0445\u043e\u0442\u044f \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e:

\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u041a\u043b\u0430\u0441\u0441 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Simple Storage Grav\\Framework\\Flex\\Storage\\SimpleStorage \u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0434\u0438\u0430. File Storage Grav\\Framework\\Flex\\Storage\\FileStorage \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435. Folder Storage Grav\\Framework\\Flex\\Storage\\FolderStorage \u041a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430 \u0441 options.formatter.class:

\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u041a\u043b\u0430\u0441\u0441 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 JSON Grav\\Framework\\File\\Formatter\\JsonFormatter \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430 JSON. YAML Grav\\Framework\\File\\Formatter\\YamlFormatter \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430 YAML. Markdown Grav\\Framework\\File\\Formatter\\MarkdownFormatter \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430 Grav Markdown \u0441 \u043e\u0431\u043b\u043e\u0436\u043a\u043e\u0439 YAML. Serialize Grav\\Framework\\File\\Formatter\\SerializeFormatter \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PHP. \u0411\u044b\u0441\u0442\u0440\u043e, \u043d\u043e \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. INI Grav\\Framework\\File\\Formatter\\IniFormatter \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430 INI. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f. CSV Grav\\Framework\\File\\Formatter\\CsvFormatter \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u0430 CSV. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (\u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0434\u043b\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0438\u0436\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u0445:

JSONYamlMarkdownSerializeINICSV
# JSON\nformatter:\nclass: 'Grav\\Framework\\File\\Formatter\\JsonFormatter'\noptions:\n    file_extension: '.json'\n    encode_options: '' # See https://www.php.net/manual/en/function.json-encode.php (separate options with space)\n    decode_assoc: true # Decode objects as arrays\n    decode_depth: 512  # Decode up to 512 levels\n    decode_options: '' # See https://www.php.net/manual/en/function.json-decode.php (separate options with space)\n
# YAML\nformatter:\nclass: 'Grav\\Framework\\File\\Formatter\\YamlFormatter'\noptions:\n    file_extension: '.yaml'\n    inline: 5           # Save with up to 4 expanded levels\n    indent: 2           # Indent with 2 spaces\n    native: true        # Use native YAML decoder if available\n    compat: true        # If YAML cannot be decoded, use compatibility mode (SLOW)\n
# Markdown\nformatter:\nclass: 'Grav\\Framework\\File\\Formatter\\MarkdownFormatter'\noptions:\n    file_extension: '.md'\n    header: 'header'    # Header variable eg. header.title\n    body: 'markdown'    # Body variable\n    raw: 'frontmatter'  # RAW YAML variable\n    yaml:\n    inline: 20        # YAML options, see YAML formatter from above\n
# PHP Serialize\nformatter:\nclass: 'Grav\\Framework\\File\\Formatter\\SerializeFormatter'\noptions:\n    file_extension: '.ser'\n    decode_options:\n    allowed_classes: ['stdClass'] # List of allowed / safe classes during unserialize\n
# INI\nformatter:\nclass: 'Grav\\Framework\\File\\Formatter\\IniFormatter'\noptions:\n    file_extension: '.ini'\n
# CSV\nformatter:\nclass: 'Grav\\Framework\\File\\Formatter\\CsvFormatter'\noptions:\n    file_extension: ['.csv', '.tsv']\n    delimiter: ','      # Delimiter to separate the values\n    mime: 'text/x-csv'  # MIME type for downloading file\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0438 key: ASC|DESC:

config:\n  data:\n    # Ordering Options\n    ordering:\n      key: ASC\n      timestamp: ASC\n

\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 collection.search():

config:\n  data:\n    search:\n      # Fields to be searched\n      fields:\n        - last_name\n        - first_name\n        - email\n      # Search Options\n      options:\n        - contains: 1   # If field contains the search string, assign weight 1 to the object\n

Fields \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430.

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430:

\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u041a\u043b\u0430\u0441\u0441 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 case_sensitive true \u0438\u043b\u0438 false \u0415\u0441\u043b\u0438 true, \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e false same_as 0 ... 1 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043f\u043e\u0438\u0441\u043a\u0430 starts_with 0 ... 1 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 ends_with 0 ... 1 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043f\u043e\u0438\u0441\u043a\u0430 contains 0 ... 1 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430

\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 0, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u0435 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442, \u0438 \u0432\u0435\u0441 \u043e\u0442 0 \u0434\u043e 1, \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435. \u0412\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430. \u041e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0430\u043c\u043e\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u044f\u0434\u0440\u043e, \u0438\u043c\u0435\u0435\u0442 \u043b\u0443\u0447\u0448\u0435\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435, \u0447\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u0438\u043c \u0431\u0430\u043b\u043b\u043e\u043c.

\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0435\u0441\u043e\u0432 \u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f.

"},{"location":"advanced/flex/custom-types/blueprint/#config-admin","title":"Config > Admin","text":"

\u0420\u0430\u0437\u0434\u0435\u043b Admin \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432: router, actions, permissions, menu, template \u0438 views.

config:\n  # Admin Settings\n  admin:\n    # Admin router\n    router: {}\n    # Allowed admin actions\n    actions: {}\n    # Permissions\n    permissions: {}\n    # Admin menu\n    menu: {}\n    # Admin template type\n    template: pages\n    # Admin views\n    views: {}\n

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b router \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438. \u0412\u0441\u0435 \u043f\u0443\u0442\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0431\u0430\u0437\u043e\u0432\u043e\u043c\u0443 URL-\u0430\u0434\u0440\u0435\u0441\u0443 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

config:\n  admin:\n    # Admin router\n    router:\n      path: '/contacts' # Custom path to the directory\n      actions:\n        configure: # Action name\n          path: '/contacts/configure' # New path to the action.\n      redirects: # List of redirects (from: to)\n        '/flex-objects/contacts': '/contacts'\n

\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e actions \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 CRUD, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432\u0430\u0448\u0438\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c.

config:\n  admin:\n    # Allowed admin actions (for all users, including super user)\n    actions:\n      list: true   # Needs to be true (may change in the future)\n      create: true # Set to false to disable creating new objects\n      read: true   # Set to false to disable link to edit / details of the objects\n      update: false # Set to false to disable saving existing objects\n      delete: false # Set to false to disable deleting objects\n

\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0438\u0445 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0443\u043f\u0435\u0440\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

\u0420\u0430\u0437\u0434\u0435\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f Grav. \u042d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f/\u0433\u0440\u0443\u043f\u043f\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435, \u043d\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445.

config:\n  admin:\n    # Permissions\n    permissions:\n      # Primary permissions (used for the objects)\n      admin.contacts:\n        type: crudl # Create, Read, Update, Delete, List\n        label: Contacts Directory\n      # Secondary permissions (you need to assign these to a view, otherwise these will not be used)\n      admin.configuration.contacts:\n        type: default # Simple permission\n        label: Contacts Configuration\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 Flex Objects, \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u2014 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 menu.

config:\n  admin:\n    # Admin Menu\n    menu:\n      list:\n        hidden: false # If true, hide the menu item.\n        route: '/contacts' # Alias to `config.admin.router.path` if router path is not set.\n        title: \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b\n        icon: fa-address-card-o\n        authorize: ['admin.contacts.list', 'admin.super'] # Authorization needed to access the menu item.\n        priority: 2 # Priority -10 .. 10 (highest goes up)\n

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 /admin/contacts.

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 Flex, \u0432\u0430\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0430\u0448\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e template:

config:\n  admin:\n    # Admin template type (folder)\n    template: contacts\n

Flex Admin \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f: list, edit, configure \u0438 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 preview \u0438 export. \u0422\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.

config:\n  admin:\n    views:\n      # List view\n      list: {}\n      # Edit view\n      edit: {}\n      # Configure view\n      configure: {}\n      # Preview\n      preview: {}\n      # Data Export\n      export: {}\n
"},{"location":"advanced/flex/custom-types/blueprint/#prosmotr-spiska","title":"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430","text":"

\u041f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u2014 \u044d\u0442\u043e \u0442\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 list \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 VueTable \u0438 AJAX \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0415\u043c\u0443 \u043d\u0443\u0436\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u00ab\u043f\u043e\u043b\u0435\u0439\u00bb (fields) \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u00ab\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u00bb (options), \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435 \u0434\u043b\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f.

config:\n  admin:\n    views:\n      # List view\n      list:\n        icon: fa-address-card-o\n        title: Site Contacts\n        fields: {}        # See below\n        options:\n          per_page: 20    # Default number of items per page\n          order:\n            by: last_name # Default field used for ordering\n            dir: asc      # Default ordering direction\n

Icon \u0438 Title \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u043d\u0430\u0447\u043a\u0430 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c. Title \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435:

        title:\n          template: \"{{ 'PLUGIN_CONTACTS.CONTACTS_TITLE'|tu }}\"\n

Fields \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0438\u043c\u044f \u043f\u043e\u043b\u044f. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:

| \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 | \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 | \u041f\u0440\u0438\u043c\u0435\u0440 | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 | |------|-------|-------------| | width | integer | 8 | \u0428\u0438\u0440\u0438\u043d\u0430 \u043f\u043e\u043b\u044f \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 | | alias | string | 'header.published' | \u0418\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b. VueTable \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 \u0442\u043e\u0447\u043a\u0438 \u0432 \u0438\u043c\u0435\u043d\u0430\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0434\u043b\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. | | field | array | | \u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u043e\u0435 \u043f\u043e\u043b\u0435 \u0444\u043e\u0440\u043c\u044b, \u043d\u043e \u0431\u0435\u0437 \u043a\u043b\u044e\u0447\u0430. | | link | string | 'edit' | \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0442\u0435\u043a\u0441\u0442. | | search | boolean | true | \u0414\u0435\u043b\u0430\u0435\u0442 \u043f\u043e\u043b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. | | sort | array | field:\u00a0'first_name' | \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 first_name. | | title_class | string | 'center' | \u041a\u043b\u0430\u0441\u0441\u044b CSS, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445. | | data_class | string | 'left' | \u041a\u043b\u0430\u0441\u0441\u044b CSS, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. |

"},{"location":"advanced/flex/custom-types/blueprint/#redaktirovanie","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","text":"

\u0420\u0435\u0436\u0438\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0442\u0435 \u0436\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0447\u0442\u043e \u0438 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u043f\u0438\u0441\u043a\u0430:

config:\n  admin:\n    views:\n      # Edit view\n      edit:\n        icon: fa-address-card-o\n        title:\n          template: '{{ object.last_name ?? ''Last'' }}, {{ object.first_name ?? ''First Name'' }}'\n
"},{"location":"advanced/flex/custom-types/blueprint/#nastroika","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":"

\u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0432 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.

config:\n  admin:\n    views:\n      # Configure view\n      configure:\n        hidden: false # Configuration button can be hidden, for example if you have custom tab to replace it, like in Accounts.\n        authorize: 'admin.configuration.contacts' # Optional custom authorize rule for this view.\n        file: 'config://flex/contacts.yaml' # Optional file where the configuration is saved.\n\n        icon: fa-cog\n        title:\n          template: \"{{ directory.title }} {{ 'PLUGIN_ADMIN.CONFIGURATION'|tu }}\"\n
"},{"location":"advanced/flex/custom-types/blueprint/#predvaritelnyi-prosmotr","title":"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440","text":"

Flex \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440, \u0445\u043e\u0442\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0443\u0442\u0435\u043c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 blueprint.

    # Preview View\n    preview:\n      enabled: true\n      route:\n        template: '/contacts' # Twig template to create URL. In this case we use the list view\n\n       icon: fa-address-card-o\n        title:\n          template: \"{{ object.form.getValue('title') ?? object.title ?? key }}\"\n
"},{"location":"advanced/flex/custom-types/blueprint/#eksport","title":"\u042d\u043a\u0441\u043f\u043e\u0440\u0442","text":"

\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u0430\u043a \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b YAML:

    # Data Export\n    export:\n      enabled: true\n      method: 'jsonSerialize'\n      formatter:\n        class: 'Grav\\Framework\\File\\Formatter\\YamlFormatter'\n      filename: 'contacts'\n
"},{"location":"advanced/flex/custom-types/blueprint/#config-site","title":"Config > Site","text":"
config:\n  # Site Settings\n  site:\n    templates:\n      collection:\n        # Lookup for the template layout files for collections of objects\n        paths:\n          - 'flex/{TYPE}/collection/{LAYOUT}{EXT}'\n      object:\n        # Lookup for the template layout files for objects\n        paths:\n          - 'flex/{TYPE}/object/{LAYOUT}{EXT}'\n      defaults:\n        # Default template variable {TYPE}; overridden by filename of this blueprint if template folder exists\n        type: contacts\n        # Default template variable {LAYOUT}; can be overridden in render calls (usually Twig in templates)\n        layout: default\n

\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0443\u0442\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0438\u043f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0438\u043c\u044f \u043c\u0430\u043a\u0435\u0442\u0430 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435.

"},{"location":"advanced/flex/custom-types/blueprint/#chertezhi","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438","text":"

\u0420\u0430\u0437\u0434\u0435\u043b \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0441\u0430\u0439\u0442\u0430, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044f \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432.

blueprints:\n  # Blueprint for configure view.\n  configure:\n    # We are inside TABS field.\n    fields:\n      # Add our own tab\n      compatibility:\n        type: tab\n        title: Compatibility\n        fields:\n          # Fields should be prefixed with object, collection etc..\n          object.compat.events:\n            type: toggle\n            toggleable: true\n            label: Admin event compatibility\n            help: Enables onAdminSave and onAdminAfterSave events for plugins\n            highlight: 1\n            default: 1\n            options:\n              1: PLUGIN_ADMIN.ENABLED\n              0: PLUGIN_ADMIN.DISABLED\n            validate:\n              type: bool\n

\u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.

\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u043a\u044d\u0448\u0430. \u0414\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.

"},{"location":"advanced/flex/using/","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex","text":""},{"location":"advanced/flex/using/#ispolzovanie-obektov-flex","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex","text":"

\u041e\u0431\u044a\u0435\u043a\u0442\u044b Flex \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0438 \u0433\u0440\u0443\u043f\u043f \u043d\u0430 \u0432\u0430\u0448\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig.

\u0427\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 Flex, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0447\u0442\u0438\u0442\u0435 \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430

"},{"location":"advanced/flex/using/#ispolzovanie-tipa-stranitsy-flex-objects","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b flex-objects","text":"

\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 directories/flex-objects.md:

title: Directories\nflex:\n  layout: default\n  list:\n    - contacts\n    - services\n---\n# Directories\n

\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430:

title: Directories\nflex:\n  layout: default\n  directories:\n    contacts:\n      collection:\n        title: '{{ directory.title }}'\n        layout: default\n        object:\n          layout: list-default\n      object:\n        title: 'Contact: {{ object.first_name }} {{ object.last_name }}'\n        layout: default\n    services:\n---\n# Directories\n

\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 contacts/flex-objects.md:

title: Contacts\nflex:\n  directory: contacts\n  collection:\n    title: '{{ directory.title }}'\n    layout: default\n    object:\n      layout: list-default\n  object:\n    title: 'Contact: {{ object.first_name }} {{ object.last_name }}'\n    layout: default\n---\n# Contacts\n

\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 my-contact/flex-objects.md:

title: Contact\nflex:\n  directory: contacts\n  id: ki2ts4cbivggmtlj\n  object:\n    title: 'Contact: {{ object.first_name }} {{ object.last_name }}'\n    layout: default\n---\n# Contacts\n

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0438\u043f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b flex-objects \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 URL-\u0430\u0434\u0440\u0435\u0441\u0430: directory \u0438 id. \u041e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c. \u041f\u0440\u0438\u043c\u0435\u0440 url-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

https://www.domain.com/directories/directory:contacts/id:ki2ts4cbivggmtlj\n\nhttps://www.domain.com/contacts/id:ki2ts4cbivggmtlj\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043d\u0443\u0442\u0440\u0438 flex \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438 \u0444\u0430\u0439\u043b\u0430\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.

"},{"location":"advanced/flex/using/#otrisovka-kollektsii-i-obektov","title":"\u041e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432","text":"

\u0418 \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0438 \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 HTML. \u0412\u044b\u0432\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0432\u0443\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432: \u043c\u0430\u043a\u0435\u0442\u0430 \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041c\u0430\u043a\u0435\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a, \u0430 \u0437\u0430\u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0434\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0435\u0439. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.

{% render collection layout: 'custom' with { context_variable: true } %}\n\n{% render object layout: 'custom' with { context_variable: true } %}\n

\u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e: \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

"},{"location":"advanced/flex/using/#osnovy-sozdaniia-shablonov","title":"\u041e\u0441\u043d\u043e\u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432","text":"

\u0428\u0430\u0431\u043b\u043e\u043d\u044b Flex \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 templates/flex:

templates/\nflex/\ncontacts/\ncollection/\ndefault.html.twig\nobject/\ndefault.html.twig\n

\u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u043f\u0430\u043f\u043a\u0438: \u043e\u0434\u043d\u0430 \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u2014 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430. \u0424\u0430\u0439\u043b\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u2014 \u044d\u0442\u043e \u043c\u0430\u043a\u0435\u0442\u044b, \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u0430\u043a\u0435\u0442 default \u043a\u0430\u043a \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

"},{"location":"advanced/flex/using/#shablon-kollektsii","title":"\u0428\u0430\u0431\u043b\u043e\u043d \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u0428\u0430\u0431\u043b\u043e\u043d \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 flex/contacts/collection/default.html.twig \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041a\u043b\u044e\u0447 \u043a\u044d\u0448\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439 \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u0443 render().

\u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e. \u041f\u043e\u0441\u0442\u0430\u0440\u0430\u0439\u0442\u0435\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c!

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f Flex-\u0442\u0438\u043f\u0430 \u00ab\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b\u00bb:

<div id=\"flex-objects\">\n  <div class=\"text-center\">\n    <input class=\"form-input search\" type=\"text\" placeholder=\"Search by name, email, etc\" />\n    <button class=\"button button-primary sort asc\" data-sort=\"name\">\n      Sort by Name\n    </button>\n  </div>\n\n  <ul class=\"list\">\n    {% for object in collection.filterBy({ published: true }) %}\n      <li>\n        {% render object layout: layout with { options: options } %}\n      </li>\n    {% endfor %}\n  </ul>\n</div>\n\n<script>\n    var options = {\n        valueNames: [ 'name', 'email', 'website', 'entry-extra' ]\n    };\n    var flexList = new List('flex-objects', options);\n</script>\n

\u0415\u0441\u043b\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 HTML-\u043a\u043e\u0434 \u0438\u043c\u0435\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043a\u044d\u0448 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e {% do block.disableCache() %}.

"},{"location":"advanced/flex/using/#shablon-obekta","title":"\u0428\u0430\u0431\u043b\u043e\u043d \u043e\u0431\u044a\u0435\u043a\u0442\u0430","text":"

\u0428\u0430\u0431\u043b\u043e\u043d \u043e\u0431\u044a\u0435\u043a\u0442\u0430 flex/contacts/object/default.html.twig \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041a\u043b\u044e\u0447 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u0443 render().

\u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u0430\u043b\u044f\u0440\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e. \u041f\u043e\u0441\u0442\u0430\u0440\u0430\u0439\u0442\u0435\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c!

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f Flex-\u0442\u0438\u043f\u0430 \u00ab\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b\u00bb:

<div class=\"entry-details\">\n    {% if object.website %}\n        <a href=\"{{ object.website|e }}\"><span class=\"name\">{{ object.last_name|e }}, {{ object.first_name|e }}</span></a>\n    {% else %}\n        <span class=\"name\">{{ object.last_name|e }}, {{ object.first_name|e }}</span>\n    {% endif %}\n    {% if object.email %}\n        <p><a href=\"mailto:{{ object.email|e }}\" class=\"email\">{{ object.email|e }}</a></p>\n    {% endif %}\n</div>\n<div class=\"entry-extra\">\n    {% for tag in object.tags %}\n        <span>{{ tag|e }}</span>\n    {% endfor %}\n</div>\n

\u0415\u0441\u043b\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 HTML-\u043a\u043e\u0434 \u0438\u043c\u0435\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043a\u044d\u0448 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e {% do block.disableCache() %}.

"},{"location":"advanced/flex/using/#polzovatelskie-makety","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043c\u0430\u043a\u0435\u0442\u044b","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043a\u0430\u043a \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u044b, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0440\u044f\u0434\u043e\u043c \u0441 default.html.twig. \u0411\u0430\u0437\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u043c\u0430\u043a\u0435\u0442\u0430.

\u0412 \u043c\u0430\u043a\u0435\u0442\u0430\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c {% render object layout: 'xxx' %} \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0448\u0430\u0431\u043b\u043e\u043d \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

"},{"location":"advanced/flex/using/collection/","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f Flex","text":""},{"location":"advanced/flex/using/collection/#kollektsiia-flex","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f Flex","text":"

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f Flex \u2014 \u044d\u0442\u043e \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u043f\u0438\u0441\u043e\u043a.

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430, \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f Flex \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Doctrine.

"},{"location":"advanced/flex/using/collection/#vizualizatsiia-kollektsii","title":"\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":""},{"location":"advanced/flex/using/collection/#render","title":"render()","text":"

render( [layout], [context] ): Block \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • layout \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u043a\u0435\u0442\u0430 (string)
  • context \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig (array)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Block (object) HTML-\u043a\u043b\u0430\u0441\u0441 \u0431\u043b\u043e\u043a\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434

\u0412 twig \u0435\u0441\u0442\u044c \u0442\u0435\u0433 {% render %}, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0430\u043a\u0442\u0438\u0432\u0430\u043c JS/CSS \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n{% set page = 2 %}\n{% set limit = 10 %}\n{% set start = (page - 1) * limit %}\n\n<h2>Contacts:</h2>\n\n{% render contacts.limit(start, limit) layout: 'cards' with { background: 'gray', color: 'white' } %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\ContentBlock\\HtmlBlock;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n$page = 2;\n$limit = 10;\n$start = ($page-1)*$limit;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->limit($start, $limit);\n\n    /** @var HtmlBlock $block */\n    $block = $collection->render('cards', ['background' =>'gray', 'color' => 'white']);\n\n}\n
"},{"location":"advanced/flex/using/collection/#manipuliatsii-s-kollektsiiami","title":"\u041c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438","text":"

\u0412\u0441\u0435 \u044d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0418\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.

"},{"location":"advanced/flex/using/collection/#sort","title":"sort()","text":"

sort( orderings ): Collection \u041e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u043f\u0430\u0440 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e: \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 (property: direction).

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • orderings \u041f\u0430\u0440\u044b property: direction, \u0433\u0434\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u0431\u043e ASC, \u043b\u0438\u0431\u043e DESC (array)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u044b\u0439 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438

\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 Flex-\u0442\u0438\u043f\u0430.

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contacts = contacts.sort({last_name: 'ASC', first_name: 'ASC'}) %}\n\n<div>Displaying all contacts in alphabetical order:</div>\n{% render contacts layout: 'cards' %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->sort(['last_name' => 'ASC', 'first_name' => 'ASC']);\n    // Collection has now be sorted by last name, first name...\n\n}\n
"},{"location":"advanced/flex/using/collection/#limit","title":"limit()","text":"

limit( start, limit ): Collection \u0412\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 start \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e limit \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • start \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 0 (int)
  • limit \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (int)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u044b\u0439 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n{% set page = 3 %}\n{% set limit = 6 %}\n{% set start = (page - 1) * limit %}\n\n{% set contacts = contacts.limit(start, limit) %}\n\n<div>Displaying page {{ page|e }}:</div>\n{% render contacts layout: 'cards' %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n$start = 0;\n$limit = 6;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->limit($start, $limit);\n    // Collection contains only the objects in the current page...\n\n}\n
"},{"location":"advanced/flex/using/collection/#filterby","title":"filterBy()","text":"

filterBy( filters ): Collection \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u043f\u0430\u0440 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e: \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (property: value).

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • filters \u041f\u0430\u0440\u044b property: value, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 (array)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u044b\u0439 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438

\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 Flex-\u0442\u0438\u043f\u0430.

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contacts = contacts.filterBy({'published': true}) %}\n\n<div>Displaying only published contacts:</div>\n{% render contacts layout: 'cards' %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n$start = 0;\n$limit = 6;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->filterBy(['published' => true]);\n    // Collection contains only published objects...\n\n}\n
"},{"location":"advanced/flex/using/collection/#reverse","title":"reverse()","text":"

reverse(): Collection \u041f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 sort(), \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432 \u043d\u0435\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0433.

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contacts = contacts.reverse() %}\n\n<div>Displaying contacts in reverse ordering:</div>\n{% render contacts layout: 'cards' %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n$start = 0;\n$limit = 6;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->reverse();\n    // Collection is now in reverse ordering...\n\n}\n
"},{"location":"advanced/flex/using/collection/#shuffle","title":"shuffle()","text":"

shuffle(): Collection \u041f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contacts = contacts.shuffle().limit(0, 6) %}\n\n<div>Displaying 6 random contacts:</div>\n{% render contacts layout: 'cards' %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->shuffle()->limit(0,6);\n    // Collection contains 6 random contacts...\n\n}\n
"},{"location":"advanced/flex/using/collection/#select","title":"select()","text":"

select( keys ): Collection \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b (\u043f\u043e \u0438\u0445 \u043a\u043b\u044e\u0447\u0430\u043c) \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • keys \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u044e\u0447\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (array)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n{% set selected = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'] %}\n\n{% set contacts = contacts.select(selected) %}\n\n<div>Displaying 4 selected contacts:</div>\n{% render contacts layout: 'cards' %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n$selected = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'];\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->select($selected);\n    // Collection now contains the 4 selected contacts...\n\n}\n
"},{"location":"advanced/flex/using/collection/#unselect","title":"unselect()","text":"

unselect( keys ): Collection \u0423\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b (\u043f\u043e \u0438\u0445 \u043a\u043b\u044e\u0447\u0430\u043c) \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • keys \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u044e\u0447\u0435\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (array)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n{% set ignore = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'] %}\n\n{% set contacts = contacts.unselect(ignore) %}\n\n<div>Displaying all but 4 ignored contacts:</div>\n{% render contacts layout: 'cards' %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n$ignore = ['gizwsvkyo5xtms2s', 'gjmva53uoncdo4sb', 'mfzwwtcugv5hkocd', 'k5nfctkeoftwi4zu'];\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->unselect($ignore);\n    // Collection now contains all but 4 ignored contacts...\n\n}\n
"},{"location":"advanced/flex/using/collection/#search","title":"search()","text":"

search( string, [properties], [options] ): Collection \u041f\u043e\u0438\u0441\u043a \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • string \u0421\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 (string)
  • properties \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430, \u0435\u0441\u043b\u0438 null (\u0438\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (array \u0438\u043b\u0438 null)
  • options \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 (array)
    • starts_with: bool
    • ends_with: bool
    • contains: bool
    • case_sensitive: bool

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u044b\u0439 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contacts = contacts.search('Jack', ['first_name', 'last_name', 'email'], {'contains': true}) %}\n\n<div>Displaying all search results for 'Jack':</div>\n{% render contacts layout: 'cards' %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->search('Jack', ['first_name', 'last_name', 'email'], ['contains' => true]);\n    // Collection now contains all search results...\n\n}\n
"},{"location":"advanced/flex/using/collection/#copy","title":"copy()","text":"

copy(): Collection \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043f\u0438\u044e \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0432 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0442\u0435\u043f\u0435\u0440\u044c \u0441 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043f\u0438\u0438!

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contacts = contacts.shuffle().limit(0, 10) %}\n{% set fakes = contacts.copy() %}\n\n{% do fakes.setProperty('first_name', 'JACK') %}\n\n<h2>Fake cards</h2>\n{% render fakes layout: 'cards' %}\n\n<h2>Original cards</h2>\n{% render contacts layout: 'cards' %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    $collection = $collection->search('Jack', ['first_name', 'last_name', 'email'], ['contains' => true]);\n    // Collection now contains all search results...\n\n}\n
"},{"location":"advanced/flex/using/collection/#iteratsiia-po-kollektsii","title":"\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c.

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n<h2>All contacts:</h2>\n<ul>\n{% for contact in contacts %}\n    <li>{{ contact.first_name|e }} {{ contact.last_name|e }}</li>\n{% endfor %}\n</ul>\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var FlexObjectInterface $object */\n    foreach ($collection as $object) {\n        // Do something with the object...\n    }\n\n}\n
"},{"location":"advanced/flex/using/collection/#first","title":"first()","text":"

first(): Object | false \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u041f\u0435\u0440\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442
  • false \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043d\u0435\u0442
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contact = contacts.first() %}\n\n{% if contact %}\n    <h2>First contact:</h2>\n    <div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>\n{% endif %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var FlexObjectInterface|false $object */\n    $object = $collection->first();\n    if ($object) {\n        // Do something with the object...\n    }\n\n}\n
"},{"location":"advanced/flex/using/collection/#last","title":"last()","text":"

last(): Object | false \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442
  • false \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043d\u0435\u0442
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contact = contacts.last() %}\n\n{% if contact %}\n    <h2>Last contact:</h2>\n    <div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>\n{% endif %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var FlexObjectInterface|false $object */\n    $object = $collection->last();\n    if ($object) {\n        // Do something with the object...\n    }\n\n}\n
"},{"location":"advanced/flex/using/collection/#next","title":"next()","text":"

next(): object | false \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442
  • false \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n{% set first = contacts.first() %}\n...\n\n{% set contact = contacts.next() %}\n\n{% if contact %}\n    <h2>Next contact is:</h2>\n    <div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>\n{% endif %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var FlexObjectInterface|false $object */\n    while ($object = $collection->next()) {\n        // Do something with the object...\n    }\n\n}\n
"},{"location":"advanced/flex/using/collection/#current","title":"current()","text":"

current(): object | false \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442
  • false \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n{% do contacts.next() %}\n{% do contacts.next() %}\n...\n\n{% set contact = contacts.current() %}\n\n{% if contact %}\n    <h2>Current contact is:</h2>\n    <div>{{ contact.first_name|e }} {{ contact.last_name|e }}</div>\n{% endif %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n    while ($collection->next()) {\n\n        /** @var FlexObjectInterface|false $object */\n        $object = $collection->current();\n        // Do something with the object...\n\n    }\n}\n
"},{"location":"advanced/flex/using/collection/#key","title":"key()","text":"

key(): key | null \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • key (string) \u041a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430
  • null \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n{% do contacts.next() %}\n{% do contacts.next() %}\n...\n\n{% set key = contacts.key() %}\n\n{% if key %}\n    Current contact key is: <strong>{{ key|e }}</strong>\n{% endif %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n    while ($collection->next()) {\n\n        $key = $collection->key();\n        // Do something with the key...\n\n    }\n}\n
"},{"location":"advanced/flex/using/collection/#poluchenie-obekta-kliucha","title":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430/\u043a\u043b\u044e\u0447\u0430","text":""},{"location":"advanced/flex/using/collection/#dostup-k-massivu","title":"\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443","text":"

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0438\u043b\u0438 \u043a\u0430\u0440\u0442\u044b.

\u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u043d\u0435\u0442 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f null.

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contact = contacts['ki2ts4cbivggmtlj']\n\n{# Do something #}\n{% if contact %}\n{# Got Bruce Day #}\nEmail for {{ contact.first_name|e }} {{ contact.last_name|e }} is {{ contact.email|e }}\n{% else %}\nOops, contact has been removed!\n{% endif %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var FlexObjectInterface|null $object */\n    $object = $collection['ki2ts4cbivggmtlj'];\n    if ($object) {\n        // Object exists, do something with it...\n    }\n\n}\n
"},{"location":"advanced/flex/using/collection/#get","title":"get()","text":"

get( key ): Object | null \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • key \u041a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object)
  • null \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438

\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u2014 \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set contact = contacts.get('ki2ts4cbivggmtlj')\n\n{# Do something #}\n{% if contact %}\n{# Got Bruce Day #}\nEmail for {{ contact.first_name|e }} {{ contact.last_name|e }} is {{ contact.email|e }}\n{% else %}\nOops, contact has been removed!\n{% endif %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var FlexObjectInterface|null $object */\n    $object = $collection->get('ki2ts4cbivggmtlj');\n    if ($object) {\n        // Object exists, do something with it...\n    }\n\n}\n
"},{"location":"advanced/flex/using/collection/#kollektsiia-kak-massiv","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043a\u0430\u043a \u043c\u0430\u0441\u0441\u0438\u0432","text":""},{"location":"advanced/flex/using/collection/#getkeys","title":"getKeys()","text":"

getKeys(): array \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u043a\u043b\u044e\u0447\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u044e\u0447\u0435\u0439
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set keys = contacts.keys() %}\n\nKeys are: {{ keys|join(', ')|e }}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var string[] $keys */\n    $keys = $collection->getKeys();\n    $keysList = implode(', ', $keys);\n\n}\n
"},{"location":"advanced/flex/using/collection/#getobjectkeys","title":"GetObjectKeys()","text":"

GetObjectKeys(): array \u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u0430 getKeys().

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u044e\u0447\u0435\u0439
"},{"location":"advanced/flex/using/collection/#getvalues","title":"getValues()","text":"

getValues(): array \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0432 \u043c\u0430\u0441\u0441\u0438\u0432. \u041a\u043b\u044e\u0447\u0438 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • \u0421\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (array)
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set list = contacts.values() %}\n<ol>\n{% for i,object in list %}\n    <li>#{{ (i+1)|e }}: {{ object.email|e }}</li>\n{% endfor %}\n</ol>\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var FlexObjectInterface[] $objects */\n    $objects = $collection->getValues();\n    foreach ($objects as $pos => $object) {\n        // Do something with the object and its position...\n    }\n\n}\n
"},{"location":"advanced/flex/using/collection/#toarray","title":"toArray()","text":"

toArray(): array \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 PHP.

\u0422\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 getValues\u200b\u200b(), \u043d\u043e \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0439.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: Object
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set list = contacts.toArray() %}\n<ol>\n{% for key,object in list %}\n    <li>ID: {{ key|e }}: {{ object.email|e }}</li>\n{% endfor %}\n</ol>\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var array<string, FlexObjectInterface> $objects */\n    $objects = $collection->toArray();\n    foreach ($objects as $key => $object) {\n        // Do something with the object and its key...\n    }\n\n}\n
"},{"location":"advanced/flex/using/collection/#slice","title":"slice()","text":"

slice( offset, length ): array \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 length \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 offset.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • offset \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 0 (int)
  • length \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (int)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: Object

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set list = contacts.slice(10, 5) %}\n\n<div>Displaying 5 emails starting from offset 10:</div>\n<ol>\n{% for key,object in list %}\n    <li>ID: {{ key|e }}: {{ object.email|e }}</li>\n{% endfor %}\n</ol>\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n\n    /** @var array<string, FlexObjectInterface> $objects */\n    $objects = $collection->slice(10, 5);\n\n    // Do something with the object and its key...\n\n}\n
"},{"location":"advanced/flex/using/collection/#chunk","title":"chunk()","text":"

chunk( size ): array \u0420\u0430\u0437\u0431\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u0447\u0430\u0441\u0442\u0438 \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u044e size \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • size \u0420\u0430\u0437\u043c\u0435\u0440 \u0447\u0430\u0441\u0442\u0435\u0439 (int)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u0414\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: Object

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u044b.

TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set columns = contacts.limit(0, 10).chunk(5) %}\n\n<div>Displaying two columns of 5 emails each:</div>\n<div class=\"columns\">\n{% for column,list in columns %}\n    <div class=\"column\">\n    {% for object in list %}\n        <div>{{ object.email|e }}</div>\n    {% endfor %}\n    </div>\n{% endfor %}\n</div>\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = Grav::instance()->get('flex')->getCollection('contacts');\nif ($collection) {\n    /** @var array $columns */\n    $columns = $collection->limit(0, 10)->chunk(5);\n\n    /** @var\n        int $column\n        array<string, FlexObjectInterface> $objects\n    */\n    foreach ($columns as $column => $objects) {\n        // Do something with the objects...\n    }\n}\n
"},{"location":"advanced/flex/using/collection/#group","title":"group()","text":"

group( property ): array \u0421\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0438\u0445 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u0414\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: Object, \u0433\u0434\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u044e\u0447\u043e\u043c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f
TwigPHP
{% set contacts = grav.get('flex').collection('contacts') %}\n\n{% set by_name = contacts.sort({last_name: 'ASC', first_name: 'ASC'}).group('last_name') %}\n\n<div>Displaying contacts grouped by last name:</div>\n<div>\n{% for last_name,list in by_name %}\n    {{ last_name|e }}:\n    <ul>\n    {% for object in list %}\n        <li>{{ object.first_name|e }}</li>\n    {% endfor %}\n    </ul>\n{% endfor %}\n</div>\n

```php <?php

use Grav\\Common\\Grav; use Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface; use Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;

/ @var FlexCollectionInterface|null $collection */ $collection = Grav::instance()->get('flex')->getCollection('contacts'); if ($collection) { / @var array $byName */ $byName = $collection->group('last_name');

/** @var\n    string $lastName\n    array<string, FlexObjectInterface> $objects\n*/\nforeach ($byName as $lastName => $objects) {\n    // Do something with the objects...\n}\n

}

```

"},{"location":"advanced/flex/using/collection/#dobavlenie-i-udalenie-obektov","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432","text":""},{"location":"advanced/flex/using/collection/#add","title":"add()","text":"

add( Object ) \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043a\u043e\u043d\u0435\u0446 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Object \u041e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f (object)
"},{"location":"advanced/flex/using/collection/#remove","title":"remove()","text":"

remove( key ): Object | null \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • key \u041a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f (object)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object \u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 (object) \u0438\u043b\u0438 null, \u0435\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442
"},{"location":"advanced/flex/using/collection/#removeelement","title":"removeElement()","text":"

removeElement( Object ): bool \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0430\u0439\u0434\u0435\u043d.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Object \u041e\u0431\u044a\u0435\u043a\u0442, \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e (object)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • true \u0435\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u044b\u043b \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, false \u0435\u0441\u043b\u0438 \u043d\u0435\u0442
"},{"location":"advanced/flex/using/collection/#clear","title":"clear()","text":"

clear() \u041e\u0447\u0438\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0443\u0434\u0430\u043b\u044f\u044f \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.

"},{"location":"advanced/flex/using/collection/#testy","title":"\u0422\u0435\u0441\u0442\u044b","text":""},{"location":"advanced/flex/using/collection/#containskey","title":"containsKey()","text":"

containsKey( key ): bool \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • key \u041a\u043b\u044e\u0447 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • true \u0435\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, false \u0435\u0441\u043b\u0438 \u043d\u0435\u0442
"},{"location":"advanced/flex/using/collection/#contains","title":"contains()","text":"

contains( object ): bool \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Object \u041e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (object)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • true \u0435\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, false \u0435\u0441\u043b\u0438 \u043d\u0435\u0442
"},{"location":"advanced/flex/using/collection/#indexof","title":"indexOf()","text":"

indexOf( object ): string | false \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441/\u043a\u043b\u044e\u0447 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Object \u041e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (object)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • string \u0438\u043d\u0434\u0435\u043a\u0441/\u043a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, false \u0435\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d
"},{"location":"advanced/flex/using/collection/#isempty","title":"isEmpty()","text":"

isEmpty(): bool \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043f\u0443\u0441\u0442\u0430 \u043b\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f (\u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432).

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • true \u0435\u0441\u043b\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043f\u0443\u0441\u0442\u0430, false \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435
"},{"location":"advanced/flex/using/collection/#count","title":"count()","text":"

count(): int

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • int \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
"},{"location":"advanced/flex/using/collection/#massovye-deistviia-dlia-obektov","title":"\u041c\u0430\u0441\u0441\u043e\u0432\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432","text":""},{"location":"advanced/flex/using/collection/#hasproperty","title":"hasProperty()","text":"

hasProperty( property ): array \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: boolean \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0438\u043c\u0435\u0435\u0442 \u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u043b\u0438 \u043d\u0435\u0442.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u043f\u0430\u0440 key: bool, \u0433\u0434\u0435 key \u2014 \u043a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0430 bool \u043b\u0438\u0431\u043e true, \u043b\u0438\u0431\u043e false.
"},{"location":"advanced/flex/using/collection/#getproperty","title":"getProperty()","text":"

getProperty( property, default ): array \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a key: value \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u043f\u0430\u0440 key: value, \u0433\u0434\u0435 key \u2014 \u043a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0430 value \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430.
"},{"location":"advanced/flex/using/collection/#setproperty","title":"setProperty()","text":"

setProperty( property, value ): Collection \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)
  • value \u041d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (mixed)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.

"},{"location":"advanced/flex/using/collection/#defproperty","title":"defProperty()","text":"

defProperty( property, default ): Collection \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)
  • default \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (mixed)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.

"},{"location":"advanced/flex/using/collection/#unsetproperty","title":"unsetProperty()","text":"

unsetProperty( property ): Collection \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.

"},{"location":"advanced/flex/using/collection/#call","title":"call()","text":"

call( method, arguments): array \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • method \u0418\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430 (string)
  • arguments \u0421\u043f\u0438\u0441\u043e\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (array)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: result (array)

\u0415\u0441\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.

"},{"location":"advanced/flex/using/collection/#gettimestamps","title":"getTimestamps()","text":"

getTimestamps(): array \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: timestamp \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: timestamp, \u0433\u0434\u0435 timestamp \u2014 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e (array)
"},{"location":"advanced/flex/using/collection/#getstoragekeys","title":"getStorageKeys()","text":"

getStorageKeys(): array \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: storage_key \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: storage_key (array)
"},{"location":"advanced/flex/using/collection/#getflexkeys","title":"getFlexKeys()","text":"

getFlexKeys(): array \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: flex_key \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 key: flex_key (array)
"},{"location":"advanced/flex/using/collection/#withkeyfield","title":"withKeyField()","text":"

withKeyField( field ): Collection Return new collection with a different key.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • field \u041a\u043b\u044e\u0447 \u043f\u043e\u043b\u044f (string)
    • 'key': \u041a\u043b\u044e\u0447 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c
    • 'storage_key': Storage layer key
    • 'flex_key': \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0435 \u0437\u043d\u0430\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f, \u043f\u0440\u043e\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u043e\u0432\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c.
"},{"location":"advanced/flex/using/collection/#closure-tests-tolko-php","title":"Closure Tests (\u0442\u043e\u043b\u044c\u043a\u043e PHP)","text":""},{"location":"advanced/flex/using/collection/#exists","title":"exists()","text":"

exists( Closure ): bool \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0443.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Closure \u041c\u0435\u0442\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • bool true, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.
"},{"location":"advanced/flex/using/collection/#forall","title":"forAll()","text":"

forAll( Closure ): bool \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u044d\u0442\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Closure \u041c\u0435\u0442\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • bool true, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.
"},{"location":"advanced/flex/using/collection/#closure-filtering-php-only","title":"Closure Filtering (PHP only)","text":""},{"location":"advanced/flex/using/collection/#filter","title":"filter()","text":"

filter( Closure ): Collection \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u044d\u0442\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0443.

\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Closure \u041c\u0435\u0442\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true.
"},{"location":"advanced/flex/using/collection/#map","title":"map()","text":"

map( Closure ): Collection \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Closure \u041c\u0435\u0442\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430.
"},{"location":"advanced/flex/using/collection/#collectiongroup","title":"collectionGroup()","text":"

collectionGroup( property ): Collection[] \u0421\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e \u043f\u043e\u043b\u044e \u0438 \u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u0438\u0445 \u043a\u0430\u043a \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property (string) \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435 \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435, \u043a\u043b\u044e\u0447\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430.
"},{"location":"advanced/flex/using/collection/#matching","title":"matching()","text":"

matching( Criteria ): Collection \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u044d\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Criteria \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c.

\u0421\u043c. \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e Doctrine \u043e \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 ** \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445**.

"},{"location":"advanced/flex/using/collection/#orderby","title":"orderBy()","text":"

orderBy( array ): Collection \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u043f\u0430\u0440 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • array

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object) \u041d\u043e\u0432\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0441 \u043d\u043e\u0432\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c.
"},{"location":"advanced/flex/using/collection/#partition","title":"partition()","text":"

partition( Closure ): array \u0420\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u0434\u0432\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u043e\u043c.

\u041a\u043b\u044e\u0447\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • Closure \u041c\u0435\u0442\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u0421\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b [[a, b], [c, d, e]]
"},{"location":"advanced/flex/using/directory/","title":"\u041a\u0430\u0442\u0430\u043b\u043e\u0433 Flex","text":""},{"location":"advanced/flex/using/directory/#katalog-flex","title":"\u041a\u0430\u0442\u0430\u043b\u043e\u0433 Flex","text":""},{"location":"advanced/flex/using/directory/#gettitle","title":"getTitle()","text":"

getTitle(): string \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • string \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a
TwigPHP
{% set directory = grav.get('flex').directory('contacts') %}\n\n<h2>{{ directory.title|e }}</h2>\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexDirectoryInterface;\n\n/** @var FlexDirectoryInterface|null $directory */\n$directory = Grav::instance()->get('flex')->getDirectory('contacts');\nif ($directory) {\n\n    /** @var string $title */\n    $title = $directory->getTitle();\n\n}\n
"},{"location":"advanced/flex/using/directory/#getdescription","title":"getDescription()","text":"

getDescription(): string \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • string \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
TwigPHP
{% set directory = grav.get('flex').directory('contacts') %}\n\n<p>{{ directory.description|e }}</p>\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexDirectoryInterface;\n\n/** @var FlexDirectoryInterface|null $directory */\n$directory = Grav::instance()->get('flex')->getDirectory('contacts');\nif ($directory) {\n\n    /** @var string $title */\n    $description = $directory->getDescription();\n\n}\n
"},{"location":"advanced/flex/using/directory/#getobject","title":"getObject()","text":"

getObject( id ): Object | null \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043b\u0438 null, \u0435\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • id ID \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object)
  • null \u041e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d
TwigPHP
{% set directory = grav.get('flex').directory('contacts') %}\n\n{% set contact = directory.object('ki2ts4cbivggmtlj') %}\n\n{# Do something #}\n{% if contact %}\n{# Got Bruce Day #}\nEmail for {{ contact.first_name|e }} {{ contact.last_name|e }} is {{ contact.email|e }}\n{% else %}\nOops, contact has been removed!\n{% endif %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexDirectoryInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexDirectoryInterface|null $directory */\n$directory = Grav::instance()->get('flex')->getDirectory('contacts');\nif ($directory) {\n\n    /** @var FlexObjectInterface|null $object */\n    $object = $directory->getObject('ki2ts4cbivggmtlj');\n    if ($object) {\n        // Object exists, do something with it...\n    }\n\n}\n

\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u041e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Flex

"},{"location":"advanced/flex/using/directory/#getcollection","title":"getCollection()","text":"

getCollection(): Collection \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0438\u043b\u0438 null, \u0435\u0441\u043b\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Collection (object)
TwigPHP
{% set directory = grav.get('flex').directory('contacts') %}\n\n{% set contacts = directory.collection() %}\n\n{# Do something #}\n<h2>Ten first contacts:</h2>\n<ul>\n{% for contact in contacts.filterBy({published: true}).limit(0, 10) %}\n    <li>{{ contact.first_name|e }} {{ contact.last_name|e }}</li>\n{% endfor %}\n</ul>\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexDirectoryInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\n\n/** @var FlexDirectoryInterface|null $directory */\n$directory = Grav::instance()->get('flex')->getDirectory('contacts');\nif ($directory) {\n\n    /** @var FlexCollectionInterface $collection */\n    $collection = $directory->getCollection();\n\n    // Do something with the collection...\n\n}\n

\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439 Flex

"},{"location":"advanced/flex/using/flex/","title":"Flex","text":""},{"location":"advanced/flex/using/flex/#flex","title":"Flex","text":"

\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex.

"},{"location":"advanced/flex/using/flex/#count","title":"count()","text":"

count(): int \u041f\u043e\u0434\u0441\u0447\u0451\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u043e Flex.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442: - int \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u041a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432

TwigPHP
{% set flex = grav.get('flex') %}\n\nFlex has {{ flex.count() }} enabled directories.\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexInterface;\n\n/** @var FlexInterface $flex */\n$flex = Grav::instance()->get('flex');\n\n/** @var int $count */\n$count = $flex->count();\n
"},{"location":"advanced/flex/using/flex/#getdirectories","title":"getDirectories()","text":"

getDirectories( [names] ): array \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: - names \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0435\u043d \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 (array)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442: - array \u0441\u043f\u0438\u0441\u043e\u043a \u041a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432

\u0415\u0441\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0435\u043d \u043d\u0435 \u0431\u044b\u043b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d, \u043c\u0435\u0442\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043e Flex.

TwigPHP
{% set flex = grav.get('flex') %}\n\n{# Get all directories #}\n{% set directories = flex.directories() %}\n\n{# Get listed directories #}\n{% set listed_directories = flex.directories(['contacts', 'phonebook']) %}\n\n{# Do something with the directories #}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexDirectoryInterface;\n\n/** @var FlexInterface $flex */\n$flex = Grav::instance()->get('flex');\n\n/** @var FlexDirectoryInterface[] $directories */\n$directories = $flex->getDirectories();\n// = ['contacts' => FlexDirectory, ...]\n\n/** @var FlexDirectoryInterface[] $directories */\n$listedDirectories = $flex->getDirectories(['contacts', 'phonebook']);\n// = ['contacts' => FlexDirectory]\n\n/** @var array<FlexDirectoryInterface|null> $directories */\n$listedDirectoriesWithMissing = $flex->getDirectories(['contacts', 'phonebook'], true);\n// = ['contacts' => FlexDirectory, 'phonebook' => null]\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u0438\u0442\u0435.

"},{"location":"advanced/flex/using/flex/#hasdirectory","title":"hasDirectory()","text":"

hasDirectory( name ): bool: \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: - name \u0418\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442: - bool true, \u0435\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d, \u0438\u043d\u0430\u0447\u0435 false

TwigPHP
{% set flex = grav.get('flex') %}\n\nFlex has {{ not flex.hasDirectory('contacts') ? 'not' }} contacts directory.\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexInterface;\n\n/** @var FlexInterface $flex */\n$flex = Grav::instance()->get('flex');\n\n/** @var bool $exists */\n$exists = $flex->hasDirectory('contacts');\n
"},{"location":"advanced/flex/using/flex/#getdirectory","title":"getDirectory()","text":"

getDirectory( name ): Directory | null \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 null, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: - name \u0418\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442: - \u041a\u0430\u0442\u0430\u043b\u043e\u0433 (object) - null \u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d

TwigPHP
{% set flex = grav.get('flex') %}\n\n{# Get contacts directory (null if not found) #}\n{% set directory = flex.directory('contacts') %}\n\n{# Do something with the contacts directory #}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexDirectoryInterface;\n\n/** @var FlexInterface $flex */\n$flex = Grav::instance()->get('flex');\n\n/** @var FlexDirectoryInterface|null $directory */\n$directory = $flex->getDirectory('contacts');\nif ($directory) {\n    // Directory exists, do something with it...\n}\n

\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c Flex

"},{"location":"advanced/flex/using/flex/#getobject","title":"getObject()","text":"

getObject( id, directory ): Object | null \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 null, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: - id ID \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (string) - directory \u0418\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442: - \u041e\u0431\u044a\u0435\u043a\u0442 (object) - null \u041e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d

TwigPHP
{% set flex = grav.get('flex') %}\n\n{% set contact = flex.object('ki2ts4cbivggmtlj', 'contacts') %}\n\n{# Do something #}\n{% if contact %}\n{# Got Bruce Day #}\n{{ contact.first_name|e }} {{ contact.last_name|e }} has a website: {{ contact.website|e }}\n{% else %}\nOops, contact has been removed!\n{% endif %}\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;\n\n/** @var FlexInterface $flex */\n$flex = Grav::instance()->get('flex');\n\n/** @var FlexObjectInterface|null $object */\n$object = $flex->getObject('ki2ts4cbivggmtlj', 'contacts');\nif ($object) {\n    // Object exists, do something with it...\n}\n

\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Flex

"},{"location":"advanced/flex/using/flex/#getcollection","title":"getCollection()","text":"

getCollection( directory ): Collection | null \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 null, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: - directory \u0418\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442: - \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f (object) - null \u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d

TwigPHP
{% set flex = grav.get('flex') %}\n\n{% set contacts = flex.collection('contacts') %}\n\n{# Do something #}\n<h2>Ten random contacts:</h2>\n<ul>\n{% for contact in contacts.filterBy({published: true}).shuffle().limit(0, 10) %}\n    <li>{{ contact.first_name|e }} {{ contact.last_name|e }}</li>\n{% endfor %}\n</ul>\n
<?php\n\nuse Grav\\Common\\Grav;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexCollectionInterface;\nuse Grav\\Framework\\Flex\\Interfaces\\FlexInterface;\n\n/** @var FlexInterface $flex */\n$flex = Grav::instance()->get('flex');\n\n/** @var FlexCollectionInterface|null $collection */\n$collection = $flex->getCollection('contacts');\nif ($collection) {\n    // Collection exists, do something with it...\n}\n

\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439 Flex

"},{"location":"advanced/flex/using/object/","title":"\u041e\u0431\u044a\u0435\u043a\u0442 Flex","text":""},{"location":"advanced/flex/using/object/#obekt-flex","title":"\u041e\u0431\u044a\u0435\u043a\u0442 Flex","text":""},{"location":"advanced/flex/using/object/#rendering-obekta","title":"\u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043e\u0431\u044a\u0435\u043a\u0442\u0430","text":""},{"location":"advanced/flex/using/object/#render","title":"render()","text":"

render( [layout], [context] ): Block \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • layout \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u043a\u0435\u0442\u0430 (string)
  • context \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig (array)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Block (object) \u041a\u043b\u0430\u0441\u0441 HtmlBlock, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435

\u0412 twig \u0435\u0441\u0442\u044c \u0442\u0435\u0433 {% render %} , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 JS/CSS \u0430\u043a\u0442\u0438\u0432\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.

TwigPHP
{% set contact = grav.get('flex').object('gizwsvkyo5xtms2s', 'contacts') %}\n\n{% render contact layout: 'details' with { my_variable: true } %}\n

```php <?php

use Grav\\Common\\Grav; use Grav\\Framework\\ContentBlock\\HtmlBlock; use Grav\\Framework\\Flex\\Interfaces\\FlexObjectInterface;

/* @var FlexObjectInterface|null $collection / $object = Grav::instance()->get('flex')->getObject('gizwsvkyo5xtms2s', 'contacts'); if ($object) {

/** @var HtmlBlock $block */\n$block = $object->render('details', ['my_variable' => true]);\n

}

```

"},{"location":"advanced/flex/using/object/#drugie-metody","title":"\u0414\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b","text":""},{"location":"advanced/flex/using/object/#getkey","title":"getKey()","text":"

getKey(): string \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • string \u041a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430
"},{"location":"advanced/flex/using/object/#haskey","title":"hasKey()","text":"

hasKey(): bool \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043b\u0438 \u043a\u043b\u044e\u0447 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • true \u0435\u0441\u043b\u0438 \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447, false \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435
"},{"location":"advanced/flex/using/object/#getflextype","title":"getFlexType()","text":"

getFlexType(): string \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • string \u0418\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 Flex, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442
"},{"location":"advanced/flex/using/object/#hasproperty","title":"hasProperty()","text":"

hasProperty( property ): bool \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true, \u0435\u0441\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0431\u044b\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0438 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u043d\u0435 null).

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • true \u0435\u0441\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, false \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435.
"},{"location":"advanced/flex/using/object/#getproperty","title":"getProperty()","text":"

getProperty( property, default ): mixed \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • mixed \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430
  • null \u0435\u0441\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0438\u043b\u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
"},{"location":"advanced/flex/using/object/#setproperty","title":"setProperty()","text":"

setProperty( property, value ): Object \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)
  • value \u041d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (mixed)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u041e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432\u0441\u0435\u043c\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e, \u00ab\u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0439\u0442\u0435\u00bb (clone) \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.

"},{"location":"advanced/flex/using/object/#defproperty","title":"defProperty()","text":"

defProperty( property, default ): Object \u0417\u0430\u0434\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)
  • default \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (mixed)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u041e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432\u0441\u0435\u043c\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e, \u00ab\u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0439\u0442\u0435\u00bb (clone) \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.

"},{"location":"advanced/flex/using/object/#unsetproperty","title":"unsetProperty()","text":"

unsetProperty( property ): Object \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • property \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 (string)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u041e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432\u0441\u0435\u043c\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e, \u00ab\u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0439\u0442\u0435\u00bb (clone) \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.

"},{"location":"advanced/flex/using/object/#isauthorized","title":"isAuthorized()","text":"

isAuthorized( action, [scope], [user] ): bool | null \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d \u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • action (string)
  • \u041e\u0434\u043d\u043e \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430: create, read, update, delete, list
  • scope \u041d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e (string)
  • \u041e\u0431\u044b\u0447\u043d\u043e \u043b\u0438\u0431\u043e admin, \u043b\u0438\u0431\u043e site
  • user \u041d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (object)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • true \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435
  • false \u0417\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435
  • null \u041d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d (\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u0417\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c)

\u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f deny: denied (false), not set (null). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u043b \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443, \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u043b\u0438.

"},{"location":"advanced/flex/using/object/#getflexdirectory","title":"getFlexDirectory()","text":"

getFlexDirectory(): Directory

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Directory (object)
"},{"location":"advanced/flex/using/object/#gettimestamp","title":"getTimestamp()","text":"

getTimestamp(): int \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • int \u041c\u0435\u0442\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0432 UNIX-\u0444\u043e\u0440\u043c\u0430\u0442\u0435).
"},{"location":"advanced/flex/using/object/#search","title":"search()","text":"

search(string, [properties], [options] ): float \u041f\u043e\u0438\u0441\u043a \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0435\u0441 \u043e\u0442 0 \u0434\u043e 1.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • string \u0421\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 (string)
  • properties \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e null (\u0438\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (array \u0438\u043b\u0438 null)
  • options \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 (array)
    • starts_with: bool
    • ends_with: bool
    • contains: bool
    • case_sensitive: bool

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • float \u0412\u0435\u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0442 0 \u0434\u043e 1, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.
  • 0 \u041e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0438\u0441\u043a\u0443

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 0...1!

"},{"location":"advanced/flex/using/object/#getflexkey","title":"getFlexKey()","text":"

getFlexKey(): string \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • string \u041a\u043b\u044e\u0447 Flex \u043e\u0431\u044a\u0435\u043a\u0442\u0430

\u041a\u043b\u044e\u0447\u0438 Flex \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0435 \u0437\u043d\u0430\u044f, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442.

"},{"location":"advanced/flex/using/object/#getstoragekey","title":"getStorageKey()","text":"

getStorageKey(): string \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 (\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • string \u041a\u043b\u044e\u0447 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430
"},{"location":"advanced/flex/using/object/#exists","title":"exists()","text":"

exists(): bool \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0441\u0442\u0438\u043d\u0443, \u0435\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • true \u041e\u0431\u044a\u0435\u043a\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435
  • false \u041e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u0431\u044b\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d
"},{"location":"advanced/flex/using/object/#update","title":"update()","text":"

update( data, files ): Object \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • data (array) \u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0441 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438
  • files (array) \u041c\u0430\u0441\u0441\u0438\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Psr\\Http\\Message\\UploadedFileInterface

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u041e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432

\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442.

"},{"location":"advanced/flex/using/object/#create","title":"create()","text":"

create( [key] ): Object \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • key (string) \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442
"},{"location":"advanced/flex/using/object/#createcopy","title":"createCopy()","text":"

createCopy( [key] ): Object \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • key (string) \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442
"},{"location":"advanced/flex/using/object/#save","title":"save()","text":"

save(): Object \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442
"},{"location":"advanced/flex/using/object/#delete","title":"delete()","text":"

delete(): Object \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442
"},{"location":"advanced/flex/using/object/#getblueprint","title":"getBlueprint()","text":"

getBlueprint( [name] ): Blueprint \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0435\u0440\u0442\u0435\u0436 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • name (string) \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u0434\u043b\u044f \u0447\u0435\u0440\u0442\u0435\u0436\u0430

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Blueprint (object)
"},{"location":"advanced/flex/using/object/#getform","title":"getForm()","text":"

getForm( [name], [options] ): Form \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • name (string) \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b
  • options (array) \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u043e\u0440\u043c\u044b

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Form (object)
"},{"location":"advanced/flex/using/object/#getdefaultvalue","title":"getDefaultValue()","text":"

getDefaultValue( name, [separator] ): mixed \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0435 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • name (string) \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430
  • separator (string) \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b-\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e . (\u0442\u043e\u0447\u043a\u0430)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • mixed \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
"},{"location":"advanced/flex/using/object/#getdefaultvalues","title":"getDefaultValues()","text":"

getDefaultValues(): array \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0435 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • array \u0412\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
"},{"location":"advanced/flex/using/object/#getformvalue","title":"getFormValue()","text":"

getFormValue( name, [default], [separator] ): mixed \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0435 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • name (string) \u0418\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430
  • default (mixed) \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, null \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e
  • separator (string) \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b-\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e . (\u0442\u043e\u0447\u043a\u0430)

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • mixed \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b
"},{"location":"advanced/flex/using/object/#triggerevent","title":"triggerEvent()","text":"

triggerEvent( name, [Event] ): Object \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u044b\u0431\u043e\u0440\u0443.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

  • name (string) \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f
  • Event (object) \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441\u043e\u0431\u044b\u0442\u0438\u044f

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:

  • Object (object) \u041e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432
"},{"location":"advanced/grav-development/","title":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 Grav","text":""},{"location":"advanced/grav-development/#razrabotka-grav","title":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 Grav","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Grav, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443, \u0447\u0435\u043c \u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Grav. \u042d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 \u0442\u0438\u043f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: Grav Core, Grav Plugins, Grav Skeletons \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 Grav Themes.

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f:

"},{"location":"advanced/grav-development/#grav-core","title":"Grav Core","text":"

\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e Grav Core, \u043c\u044b \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0432\u0435\u0449\u0430\u0445 \u0432 \u043f\u0430\u043f\u043a\u0435 system. \u042d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435, \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f Grav, \u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0439 \u0441\u0443\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 Grav.

Grav \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d \u043d\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438. \u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0447\u0430\u0441\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d. \u041c\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u044f\u0434\u0440\u0435 Grav.

"},{"location":"advanced/grav-development/#zapusk-testov","title":"\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432","text":"

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 composer install \u0438\u0437 \u043a\u043e\u0440\u043d\u044f Grav.

composer install\n

\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u044b:

composer test\n

\u042d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0441\u0430\u0439\u0442\u0435.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440

composer test tests/unit/Grav/Common/Markdown/ParsedownTest::testAttributeLinks\n

\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432:

./vendor/bin/codecept run\n./vendor/bin/codecept run tests/unit/Grav/Common/Markdown/ParsedownTest::testAttributeLinks\n
"},{"location":"advanced/grav-development/#plaginy-grav","title":"\u041f\u043b\u0430\u0433\u0438\u043d\u044b Grav","text":"

\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0443\u0441\u0438\u043b\u0438\u0439 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Grav. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 Grav \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041c\u044b \u0443\u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0449\u044c \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.

\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u043e\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445, \u043d\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432:

  1. Grav Core \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043a\u0443\u0434\u043d\u044b\u043c - \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0431\u043b\u043e\u0433\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0447\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.
  2. \u0421\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 - \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 Grav \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c Grav, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0434\u0435\u043b\u0430\u043b \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435.
"},{"location":"advanced/grav-development/#trebovaniia-plaginov","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d Grav \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Grav \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b:

  • yourplugin.php - PHP \u0444\u0430\u0439\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043f\u0430\u043f\u043a\u0430
  • yourplugin.yaml - \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u044e\u0431\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432
  • blueprints.yaml - \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438 \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b
  • CHANGELOG.md - \u0444\u0430\u0439\u043b \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Grav \u0434\u043b\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430
  • README.md - \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430
  • LICENSE - \u0444\u0430\u0439\u043b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, MIT, \u0435\u0441\u043b\u0438 \u043e\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044f\u0434\u0440\u0443 Grav
  • languages.yaml (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) - \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430
"},{"location":"advanced/grav-development/#karkasy-grav","title":"\u041a\u0430\u0440\u043a\u0430\u0441\u044b Grav","text":"

Grav Skeleton \u2014 \u044d\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437\u0435\u0446 \u0441\u0430\u0439\u0442\u0430. \u041e\u043d\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 Grav Core, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438 \u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e.

Grav \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432\u0441\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u0430, \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u0440\u043a\u0430\u0441\u043e\u0432 - \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u043f\u043a\u0430 user \u043d\u0430 GitHub, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 (\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u0430) \u0432 \u043f\u0430\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440.

\u042d\u0442\u0438 \u043a\u0430\u0440\u043a\u0430\u0441\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442. \u0412\u044b \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430\u0431\u043e\u0440\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041e\u043d \u0442\u0430\u043a \u0436\u0435 \u0433\u0438\u0431\u043e\u043a, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Grav.

"},{"location":"advanced/grav-development/#trebovaniia-karkasov","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u043a\u0430\u0441\u043e\u0432","text":"

\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043a\u0430\u0440\u043a\u0430\u0441 Grav \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Grav \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u043a\u0430\u0440\u043a\u0430\u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b:

  • .dependencies - \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0442\u0435\u043c\u044b \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u0435\u043b\u0435\u0442\u0430.
  • blueprints.yaml - \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043a\u0435\u043b\u0435\u0442\u0430 \u0438 \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b
  • CHANGELOG.md - \u0444\u0430\u0439\u043b \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Grav \u0434\u043b\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430
  • README.md - required file to explain and preview the plugin
  • LICENSE - \u0444\u0430\u0439\u043b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, MIT, \u0435\u0441\u043b\u0438 \u043e\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044f\u0434\u0440\u0443 Grav
  • screenshot.jpg - \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0442\u0435\u043c\u044b \u0441 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d 1:1. \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 800x800 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.
"},{"location":"advanced/grav-development/#temy-grav","title":"\u0422\u0435\u043c\u044b Grav","text":"

\u0418\u0437-\u0437\u0430 \u0442\u0435\u0441\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0438 \u0442\u0435\u043c\u0430\u043c\u0438 Grav \u0442\u0435\u043c\u0430 Grav \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0438 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0430\u0439\u0442\u0430 Grav. \u041f\u043e\u0434 \u044d\u0442\u0438\u043c \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 Grav \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d \u0432 \u0442\u0435\u043c\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u0430\u0448\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0414\u0432\u0438\u0436\u043e\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig - \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0438 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Grav \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0434\u0438\u0437\u0430\u0439\u043d, \u043a\u0430\u043a\u043e\u0439 \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435. \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 Grav, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 Grav \u043e\u0442 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 CMS, \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0441\u043b\u0430\u0431\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c \u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c.

"},{"location":"advanced/grav-development/#trebovaniia-tem","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043c","text":"

\u0425\u043e\u0440\u043e\u0448\u0430\u044f \u0442\u0435\u043c\u0430 Grav \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Grav \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b:

  • yourtheme.php - PHP \u0444\u0430\u0439\u043b \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u043f\u0430\u043f\u043a\u0430
  • yourtheme.yaml - \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u044e\u0431\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u0430
  • blueprints.yaml - \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u044b \u0438 \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b
  • CHANGELOG.md - \u0444\u0430\u0439\u043b \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Grav \u0434\u043b\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430
  • README.md - \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0442\u0435\u043c\u044b
  • LICENSE - \u0444\u0430\u0439\u043b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, MIT, \u0435\u0441\u043b\u0438 \u043e\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044f\u0434\u0440\u0443 Grav
  • screenshot.jpg - \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0442\u0435\u043c\u044b \u0441 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d 1:1. \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 800x800 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.
  • thumbnail.jpg - \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u044d\u0441\u043a\u0438\u0437\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u0421\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d 1:1 \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c 300x300 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439.
  • languages.yaml (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) - \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430
"},{"location":"advanced/grav-development/#demo-kontent","title":"\u0414\u0435\u043c\u043e-\u043a\u043e\u043d\u0442\u0435\u043d\u0442","text":"

\u0421 \u0432\u044b\u043f\u0443\u0441\u043a\u043e\u043c Grav 0.9.18 \u0432\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u043b\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 \u0442\u0435\u043c\u044b. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c _demo/, \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 user/ \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438\u043b\u0438 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0435\u0449\u0451, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0438 \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e.

\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043b\u0438 \u0442\u0435\u043c\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d Admin.

"},{"location":"advanced/grav-development/#protsess-vypuska-temy-plagina","title":"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u043c\u044b/\u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443 \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0438 \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Grav, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439:

  1. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b LICENSE, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 MIT-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0443\u044e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e. \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0434\u0435\u0441\u044c
  2. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b README.md \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u043f\u043e \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435. \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0434\u0435\u0441\u044c
  3. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b blueprints.yaml \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438. \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0434\u0435\u0441\u044c
  4. \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c CHANGELOG.md \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0434\u0435\u0441\u044c
  5. \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043a\u043e\u0434.
  6. \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u043b\u0438\u0437 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430/\u0442\u0435\u043c\u044b. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f Grav \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0440\u0435\u043b\u0438\u0437\u0430 \u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442 \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d/\u0442\u0435\u043c\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u0440\u0435\u043b\u0438\u0437\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u0432\u0441\u0451 \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435.
  7. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c issue \u0432 \u0442\u0440\u0435\u043a\u0435\u0440\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c Grav \u0441 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0432\u0430\u0448\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435, \u0438 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u0435\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0442\u0435\u0441\u0442, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0430 \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u043b\u0438 \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u041e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0445\u0432\u0430\u0447\u0435\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u0433\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043e. GPM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043d\u043e\u0432\u0435\u0435 \u043b\u0438 \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d/\u0442\u0435\u043c\u0430, \u0447\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439. \u041c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u043b\u044f \u0442\u0435\u0433\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. 1.2.4. \u0421\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0435\u0433\u043e\u0432 \u0438\u043c\u0435\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435!

"},{"location":"advanced/grav-development/#format-spiska-izmenenii","title":"\u0424\u043e\u0440\u043c\u0430\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439","text":"

\u0421\u0430\u0439\u0442 GetGrav.org \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e Markdown, \u043d\u043e \u0441 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e CSS \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u0427\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:

# vX.Y.Z\n## 01/01/2015\n\n1. [](#new)\n    * \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0444\u0438\u0447\u0430\n    * \u0414\u0440\u0443\u0433\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0444\u0438\u0447\u0430\n2. [](#improved)\n    * \u0421\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435\n    * \u0414\u0440\u0443\u0433\u043e\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435\n3. [](#bugfix)\n     * \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\n     * \u0414\u0440\u0443\u0433\u043e\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\n\n...\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437...\n

\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b #new, #improved, #bugfix \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b.

\u0412 \u0434\u0430\u0442\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 m/d/y \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b \u0438\u043b\u0438 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 d-m-y. \u0422\u0430\u043a\u0436\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 (\u0432\u0435\u0440\u0441\u0438\u044f \u0438 \u0434\u0430\u0442\u0430) \u0438 \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438 (#new, #improved, #bugfix) \u0435\u0441\u0442\u044c \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430.

"},{"location":"advanced/grav-development/#nastroika-github","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 GitHub","text":"

\u041a\u0430\u043a \u0438 \u0432 \u043d\u0430\u0448\u0438 \u0434\u043d\u0438, GitHub \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u0430\u0448\u0438\u043c \u043b\u0443\u0447\u0448\u0438\u043c \u0434\u0440\u0443\u0433\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u043e \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f Grav. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.

\u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u0432\u0441\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0432 \u043e\u0434\u043d\u0443 \u043f\u0430\u043f\u043a\u0443 Projects \u0438\u043b\u0438 Development \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u0448\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.

\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f GitFlow \u0434\u043b\u044f \u0432\u0441\u0435\u0439 \u043d\u0430\u0448\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Grav. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 GitFlow \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0432\u0435\u0442\u043a\u0435 develop, \u043d\u043e \u043d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0442\u0432\u044f\u0445 feature, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0432 develop. \u0420\u0435\u043b\u0438\u0437\u044b \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442 develop \u0432 master, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0435\u0442\u043a\u0438 hotfix \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0430. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 Git \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u044d\u0442\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c Atlassian SourceTree, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439, \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438.

Grav \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 (\u043f\u0440\u043e\u0434\u0438\u043a\u0442\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u043c .dependencies), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u044b Error \u0438 Problems, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0435\u043c\u0443 Antimatter. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043a\u0438 \u043d\u0430 \u0441\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043d\u0435\u0441\u0442\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 getgrav, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u043e\u0440\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 \u0432\u0430\u0448\u0435\u0439 \u0432\u0438\u043b\u043a\u0438, \u0430 \u043d\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 getgrav. \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u044f\u043c\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 getgrav.

cd\nmkdir Projects\ncd Projects\nmkdir Grav\ncd Grav\ngit clone https://github.com/getgrav/grav.git\ngit clone https://github.com/getgrav/grav-plugin-error.git\ngit clone https://github.com/getgrav/grav-plugin-problems.git\ngit clone https://github.com/getgrav/grav-theme-antimatter.git\n

\u042d\u0442\u043e \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 4 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 \u0432\u0430\u0448\u0443 \u043f\u0430\u043f\u043a\u0443 ~/Projects/Grav.

\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0434\u043b\u044f Grav \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b bin/grav new-project. \u042d\u0442\u043e \u0432\u0435\u0440\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0430\u0436\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u044f. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u043a\u043e\u0440\u043d\u044f, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438. \u041c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0444\u043b\u0430\u0433 -s \u043a\u043e\u043c\u0430\u043d\u0434\u0435 bin/grav new-project.

\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0433. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0433\u0434\u0435 \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0432\u0430\u0448\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0418\u0442\u0430\u043a, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043d\u043e\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 .grav/, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430:

cd\nmkdir .grav\nvi .grav/config\n

\u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435: \u0443\u043a\u0430\u0436\u0438\u0442\u0435, \u0433\u0434\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b:

github_repos: /Users/your_user/Projects/Grav/\n

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0438 \u0447\u0442\u043e \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441\u0430\u0439\u0442, \u0433\u0434\u0435 ~/www - \u044d\u0442\u043e \u0432\u0430\u0448 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442, \u0430 ~/www/grav - \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0432\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Grav:

cd ~/Projects/Grav/grav\nbin/grav new-project -s ~/www/grav\n

\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e:

rhukster@gibblets:~/Projects/Grav/grav(develop\u25cb) \u00bb bin/grav new-project -s ~/www/grav\n\nCreating Directories\n    /cache\n    /logs\n    /images\n    /assets\n    /user/accounts\n    /user/config\n    /user/pages\n    /user/data\n    /user/plugins\n    /user/themes\n\nResetting Symbolic Links\n    /index.php -> /Users/rhuk/www/grav/index.php\n    /composer.json -> /Users/rhuk/www/grav/composer.json\n    /bin -> /Users/rhuk/www/grav/bin\n    /system -> /Users/rhuk/www/grav/system\n\nPages Initializing\n    /Users/rhuk/Projects/Grav/grav/user/pages -> Created\n\nFile Initializing\n    /.dependencies -> Created\n    /.htaccess -> Created\n    /user/config/site.yaml -> Created\n    /user/config/system.yaml -> Created\n\nPermissions Initializing\n    bin/grav permissions reset to 755\n\nread local config from /Users/rhuk/.grav/config\n\nSymlinking Bits\n===============\n\nSUCCESS symlinked grav-plugin-problems -> user/plugins/problems\n\nSUCCESS symlinked grav-plugin-error -> user/plugins/error\n\nSUCCESS symlinked grav-theme-antimatter -> user/themes/antimatter\n

\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430 pages. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u0430\u0437\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430, \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f.

\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 http://localhost/grav \u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442. \u0422\u0435\u043f\u0435\u0440\u044c \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 ~/www/grav, \u0431\u0443\u0434\u0443\u0442 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0432 \u0432\u0430\u0448\u0438 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.

"},{"location":"advanced/grav-development/#obsluzhivanie-zabroshennykh-proektov","title":"\u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432","text":"

\u041b\u044e\u0434\u0438 \u0443\u0445\u043e\u0434\u044f\u0442, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0431\u0440\u043e\u0448\u0435\u043d. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u0437\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443:

  1. \u041e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.
  2. \u0415\u0441\u043b\u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0438\u0439 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e \u043f\u0440\u043e\u0448\u0435\u0441\u0442\u0432\u0438\u0438 30 \u0434\u043d\u0435\u0439, \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u044f\u0432\u043b\u044f\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043a\u0438\u0434\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u0438 \u043d\u0435 \u0436\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043c\u0443-\u043b\u0438\u0431\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0448\u0430\u0433\u0443.
  3. \u041e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043d\u043e\u0432\u0443\u044e issue \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Grav \u043d\u0430 GitHub \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438:
    • \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a: [change-resource] Take over plugin/theme
    • \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.
    • \u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u0430\u0448 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442, \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u0431\u0435\u0437 \u043e\u0442\u0432\u0435\u0442\u0430, \u0438\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0431\u0435\u0441\u0435\u0434\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441.
  4. \u0421\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0438\u0435 Grav \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u0434\u0435\u043b\u043e \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0442 \u0432\u0430\u043c, \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u043e \u043b\u0438 \u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0448\u0430\u0433\u0443.
  5. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 \u0440\u0430\u0437\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u043d\u043e\u0432\u044b\u043c \u0440\u0435\u043b\u0438\u0437\u043e\u043c.
  6. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 README \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u043c, \u0438 \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.
  7. \u041e\u0442\u0432\u0435\u0442\u044c\u0442\u0435 \u043d\u0430 issue, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0438\u043c \u043d\u043e\u0432\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.
  8. \u0421\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u044f\u0442 GPM, \u0438 \u043d\u043e\u0432\u044b\u0435 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.
"},{"location":"advanced/grav-development/grav-15-upgrade-guide/","title":"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e Grav \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 1.6","text":""},{"location":"advanced/grav-development/grav-15-upgrade-guide/#rukovodstvo-po-obnovleniiu-grav-s-versii-menshe-1-6","title":"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e Grav \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 1.6","text":"

\u042d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f Grav v1.2.0 \u0438 \u0432\u0441\u0435\u0445 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439.

\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Grav \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043f\u043e\u043b\u043e\u043c\u043a\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430!

"},{"location":"advanced/grav-development/grav-15-upgrade-guide/#podgotovka","title":"\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430","text":"

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Grav \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043f\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 Linux/Unix, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 PHP 7.3 \u0438 SSH \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c CLI. \u042d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 Linux \u0434\u043b\u044f Windows 10, \u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430, \u0432\u0430\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.

PHP 7.3 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f PHP, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 Grav. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PHP 7.1 \u0438\u043b\u0438 7.2, \u043d\u043e \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c Grav \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 1.6.31. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 PHP 7.3 \u0438\u043b\u0438 7.4, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. PHP 8 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e Grav 1.7 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.

\u042d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e Grav \u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b: Problems, Error, Form, Email, Login \u0438 Admin. \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043a\u0430\u043a Grav 1.6, \u0442\u0430\u043a \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e Grav. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u044d\u0442\u0443 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e. \u0421\u0430\u043c\u044b\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u2014 \u044d\u0442\u043e \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 Grav 1.7.0 (18.01.2021) \u0438\u043b\u0438 \u0431\u044b\u043b\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Grav 1.7.

\u0412\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u0438 \u043b\u044e\u0431\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0438\u043b\u0438 \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u041b\u044e\u0431\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 Grav \u0438 PHP. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u0435\u0440\u043d\u043e \u0438 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 Markdown, YAML \u0438 Twig, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0435\u0441\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u044f\u0432\u043b\u044f\u044e\u0442 \u043e\u0448\u0438\u0431\u043a\u0438, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e. \u041d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435 \u0432\u044b\u044f\u0432\u043b\u044f\u044e\u0442 \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.

\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0438 Grav CLI):

  • \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e
  • \u0412\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e Grav \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 bin/gpm version grav
  • \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e PHP CLI \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 php -v, \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0435 \u043d\u0438\u0436\u0435 PHP 7.3.6
  • \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e PHP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432\u0435\u0440\u0441\u0438\u044f PHP CLI
  • \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0445 \u043f\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435, \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435)
  • \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0442\u0435\u043c\u0430\u043c\u0438
"},{"location":"advanced/grav-development/grav-15-upgrade-guide/#perekhod-k-grav-1-6-31","title":"\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a Grav 1.6.31","text":"

\u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u044b \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043a\u043e\u043f\u0438\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c Windows, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 Linux, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0438\u0445.

\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav (\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 -y \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 GPM, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Grav 1.2 \u0438\u043b\u0438 \u043d\u0438\u0436\u0435):

wget -q https://getgrav.org/download/core/grav-update/1.6.31 -O tmp/grav-update-v1.6.31.zip\n\nbin/gpm direct-install -y tmp/grav-update-v1.6.31.zip\n

Grav \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u043f\u043a\u0438: assets bin system vendor webserver-configs \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435/\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 zip-\u0444\u0430\u0439\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f Grav. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b \u0432 zip-\u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 grav-update.

\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b.

wget -q https://getgrav.org/download/plugins/problems/2.0.3 -O tmp/grav-plugin-problems-v2.0.3.zip\nwget -q https://getgrav.org/download/plugins/error/1.7.1 -O tmp/grav-plugin-error-v1.7.1.zip\nwget -q https://getgrav.org/download/plugins/form/4.3.0 -O tmp/grav-plugin-form-v4.3.0.zip\nwget -q https://getgrav.org/download/plugins/email/3.1.0 -O tmp/grav-plugin-email-v3.1.0.zip\nwget -q https://getgrav.org/download/plugins/login/3.3.8 -O tmp/grav-plugin-login-v3.3.8.zip\nwget -q https://getgrav.org/download/plugins/admin/1.9.19 -O tmp/grav-plugin-admin-v1.9.19.zip\n\n\nbin/gpm direct-install -y tmp/grav-plugin-problems-v2.0.3.zip\nbin/gpm direct-install -y tmp/grav-plugin-error-v1.7.1.zip\nbin/gpm direct-install -y tmp/grav-plugin-form-v4.3.0.zip\nbin/gpm direct-install -y tmp/grav-plugin-email-v3.1.0.zip\nbin/gpm direct-install -y tmp/grav-plugin-login-v3.3.8.zip\nbin/gpm direct-install -y tmp/grav-plugin-admin-v1.9.19.zip\n

\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0432 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 user/plugins/pluginnname \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0442\u0443\u0434\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b \u0432 zip-\u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 \u0441 \u043f\u043e\u043b\u0443\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c (\u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f).

"},{"location":"advanced/grav-development/grav-15-upgrade-guide/#obnovlenie-do-grav-1-7","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e Grav 1.7","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b CLI \u043e\u0434\u043d\u0443 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438 \u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c:

bin/gpm self-upgrade\nbin/gpm update\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u043d\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Grav 1.6. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043f\u043e\u0437\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u0439\u0442.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0442\u043e \u043f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0430\u0439\u0442 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442.

\u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f Grav \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u044e \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e Grav 1.7. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442, \u0442\u0430\u043a \u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0443.

"},{"location":"advanced/grav-development/grav-16-upgrade-guide/","title":"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0434\u043e Grav 1.6","text":""},{"location":"advanced/grav-development/grav-16-upgrade-guide/#rukovodstvo-po-obnovleniiu-do-grav-1-6","title":"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0434\u043e Grav 1.6","text":"

Grav 1.6 - \u0441\u0430\u043c\u043e\u0435 \u043a\u0440\u0443\u043f\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430 Grav. \u041e\u043d\u043e \u0432\u0432\u043e\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u043f\u0443\u0442\u044c \u043a Grav 2.0.

\u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043b\u044e\u0434\u0435\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 Grav 1.6 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u041d\u043e, \u043a\u0430\u043a \u0438 \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0441\u0430\u0439\u0442\u0430 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c \u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0438\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Grav.

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0438 \u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.

"},{"location":"advanced/grav-development/grav-16-upgrade-guide/#vkladka-deprecated-na-paneli-otladki","title":"\u0412\u043a\u043b\u0430\u0434\u043a\u0430 Deprecated \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438","text":"

\u0414\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u043c\u044b \u0438\u0449\u0435\u043c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Deprecated \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u043e \u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 Grav. \u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Deprecated, \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.

\u042d\u0442\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0430 Deprecated \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b.

\u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b \u043f\u043e\u0439\u043c\u0430\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438\u0431\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448, \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Grav \u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043e\u0448\u0438\u0431\u043e\u043a. \u0414\u0430\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u044d\u0442\u0438 \u0448\u0430\u0433\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 YAML/Twig \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430.

\u0412\u043a\u043b\u0430\u0434\u043a\u0430 Deprecated \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041a\u0430\u0436\u0434\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0430\u043d\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043d\u0430\u0439\u0442\u0438 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434. \u0421\u043f\u0440\u0430\u0432\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0438\u043f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u0438, \u0430 \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u043f\u0440\u0430\u0432\u043e\u043c \u0443\u0433\u043b\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0442\u0438\u043f\u044b, \u0449\u0435\u043b\u043a\u043d\u0443\u0432 \u0437\u043d\u0430\u0447\u043a\u0438.

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0430\u043d\u0438\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0448\u0435\u043b\u043e\u043c\u043b\u044f\u044e\u0449\u0438\u043c. \u041d\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a: \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0444\u0430\u0439\u043b \u0438 \u0441\u0442\u0440\u043e\u043a\u0443 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c).

\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u043e\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0430\u043d\u0438\u0435\u043c:

  • yaml: \u0444\u0430\u0439\u043b YAML \u0438\u043b\u0438 Markdown \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 YAML.
  • twig: \u0444\u0430\u0439\u043b Twig \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Twig \u0438\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 Twig.
  • grav: \u0447\u0442\u043e-\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 Grav \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e.
  • vendor: \u0447\u0442\u043e-\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u043a\u043e\u0434 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.
  • unknown: \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.
"},{"location":"advanced/grav-development/grav-16-upgrade-guide/#parsing-yaml","title":"\u041f\u0430\u0440\u0441\u0438\u043d\u0433 YAML","text":"

\u0412 Grav 1.6 YAML \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u043e\u0433\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0441 \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438.

Grav 1.6 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 YAML Symfony 4.2, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 YAML \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0442\u043e\u0447\u043d\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u0438\u0437 Symfony 3.4. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b YAML, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c YAML. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 4.2, Grav \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u0440\u0441\u0435\u0440\u0430 3.4, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0441\u043d\u0438\u0437\u0438\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0430\u0439\u0442\u0430, \u0438 \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.

\u042d\u0442\u043e\u0442 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d \u0432 Grav 2.0.

Grav 1.6.7 \u0438 \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 CLI \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 YAML, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 bin/grav yamllinter, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 YAML \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435. \u042d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e Grav 1.6 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.

Admin 1.9.3 \u0438 \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 YAML Linter, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 \u0421\u0435\u0440\u0432\u0438\u0441 > \u041e\u0442\u0447\u0451\u0442\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b CLI.

"},{"location":"advanced/grav-development/grav-16-upgrade-guide/#posmotrite-na-eti-oshibki-yaml","title":"\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 YAML:","text":"
  • \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 @, \\``,|,%\u0438>\u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0435\u0437 \u043a\u0430\u0432\u044b\u0447\u0435\u043a: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435data-options@: []\u0432\u043c\u0435\u0441\u0442\u043e@data-options: []`.
  • \u0412\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043f\u043e\u0441\u043b\u0435 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f : \u0434\u043b\u044f \u043a\u043b\u044e\u0447\u0435\u0439: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 key: value \u0432\u043c\u0435\u0441\u0442\u043e key:value.
  • \u041e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0439\u0442\u0435 \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 null, true, false, 2.0 \u0432 \u043a\u043b\u044e\u0447\u0430\u0445; \u043a\u043b\u044e\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u0446\u0435\u043b\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438, \u043b\u0438\u0431\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438.
  • \u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0439\u0442\u0435 \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 null, true, false, 2 \u0438 2.0 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438.
  • \u041f\u0440\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u043e\u043a \u0434\u0432\u043e\u0439\u043d\u044b\u043c\u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \\.

\u041f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e YAML. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Deprecated. \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u043d\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438, \u0437\u043d\u0430\u0447\u0438\u0442, \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 YAML, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u043d\u0430 \u0437\u043d\u0430\u0447\u043a\u0438 \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b YAML, \u043d\u0430\u0436\u0430\u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0445.

\u041e\u0448\u0438\u0431\u043a\u0438 YAML \u0442\u0440\u0435\u0431\u0443\u044e\u0442, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043e\u0447\u0438\u0441\u0442\u0438\u043b\u0438 \u043a\u044d\u0448, \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 YAML.

"},{"location":"advanced/grav-development/grav-16-upgrade-guide/#rezhim-sovmestimosti-yaml","title":"\u0420\u0435\u0436\u0438\u043c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 YAML","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 Grav 1.6 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0440\u0435\u0436\u0438\u043c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 YAML. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u0442\u0430\u0440\u044b\u043c \u0441\u0430\u0439\u0442\u0430\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0432\u0441\u0435\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 YAML.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 user/config/system.yaml:

strict_mode:\n  yaml_compat: false\n

\u041c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043f\u043e\u043a\u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0430\u0439\u0442\u0430\u0445, \u0430 \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0441\u0430\u0439\u0442\u044b \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 false. \u0422\u0430\u043a\u0436\u0435 \u043b\u044e\u0431\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Grav 1.6 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 Grav 2.0.

"},{"location":"advanced/grav-development/grav-16-upgrade-guide/#twig","title":"Twig","text":""},{"location":"advanced/grav-development/grav-16-upgrade-guide/#otlozhennye-bloki","title":"\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438","text":"

\u0412\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0442\u0435\u043c\u0443 \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Grav 1.6. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0438\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e, \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 Grav \u0438 \u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0441\u043b\u0435\u0434\u0443\u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443 \u0432 \u0412\u0430\u0436\u043d\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u043e\u0433\u0435.

"},{"location":"advanced/grav-development/grav-16-upgrade-guide/#ustarevshii-twig","title":"\u0423\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 Twig","text":"

Grav 2.0 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Twig 2 \u0432\u043c\u0435\u0441\u0442\u043e Twig 1, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445 Grav 1.x. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0432 Twig 2, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b \u0432\u044b\u044f\u0432\u0438\u043b\u0438 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u043e Grav 2.0 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.

\u041f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u0445 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 Twig. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 Deprecated.

"},{"location":"advanced/grav-development/grav-16-upgrade-guide/#posmotrite-na-eti-oshibki-twig","title":"\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 Twig:","text":"
  • \u041c\u0430\u043a\u0440\u043e\u0441\u044b, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b, \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u0430 include). \u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u044f\u0432\u043d\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435.
  • \u0424\u0438\u043b\u044c\u0442\u0440 |replace () \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: { \"I like this and that.\"|replace({'this': 'foo', 'that': 'bar'}) }}.
  • \u0422\u0435\u0441\u0442 sameas() \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a same as().

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c.

"},{"location":"advanced/grav-development/grav-16-upgrade-guide/#avtoekranirovanie","title":"\u0410\u0432\u0442\u043e\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","text":"

Grav \u0431\u044b\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0437\u0430\u0449\u0438\u0449\u0435\u043d \u043e\u0442 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c XSS-\u0430\u0442\u0430\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043d\u0435\u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. Twig - \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043d\u043e \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u0431\u044b\u0442\u044c, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043d\u0435 \u043e\u0447\u0438\u0449\u0430\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b, \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0434 HTML \u0441\u0442\u0430\u043b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d Twig:

{% set my_string = '<script>echo(\"hello there!\");<script>' %}\n<p>\n    {{ my_string }}\n</p>\n

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 Grav \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Twig \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438 \u044f\u0441\u043d\u043e\u0441\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043d\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043f\u043b\u043e\u0445\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0438\u043a\u0442\u043e, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u0430\u0441, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0438\u0431\u043e \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u043b\u0438\u0431\u043e \u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0438\u0437 \u043d\u0435\u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0427\u0442\u043e \u0435\u0449\u0451 \u0445\u0443\u0436\u0435, \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f HTML-\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u0442. \u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441\u0430\u0439\u0442 \u0437\u0430\u0449\u0438\u0449\u0435\u043d \u043e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 XSS, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0442\u0435\u043c\u044b \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b Twig, \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439, \u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0431\u0435\u0437 \u044f\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0443\u044f\u0437\u0432\u0438\u043c\u044b \u0434\u043b\u044f \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430.

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0447\u0438\u0441\u0442\u044b\u0439 HTML, \u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u0441 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u00ab\u043f\u0440\u0438\u0432\u0435\u0442, \u0442\u0430\u043c!\u00bb. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e escape-\u0444\u0438\u043b\u044c\u0442\u0440\u0430 Twig |e (\u0438\u043b\u0438 |e ('html'):

{% set my_string = '<script>echo(\"hello there!\");<script>' %}\n<p>\n    {{ my_string|e }}\n</p>\n

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043b\u044e\u0434\u0435\u0439 \u0441\u043a\u043b\u043e\u043d\u043d\u044b \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 Twig, \u0438 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 |e \u043f\u043e\u0432\u0441\u044e\u0434\u0443 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0432 user/config/system.yaml \u0435\u0441\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440:

strict_mode:\n  twig_compat: false\n

\u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u00ab\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb \u0432\u043e \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0434\u043b\u044f \u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041f\u043e\u0431\u043e\u0447\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u043c \u044d\u0442\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0432\u0430\u0448 \u0441\u0430\u0439\u0442, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0444\u0438\u043b\u044c\u0442\u0440 |raw \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e HTML \u0438 HTML. \u041c\u043d\u043e\u0433\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043e\u043e\u0431\u0449\u0430\u0439\u0442\u0435 \u043e \u043b\u044e\u0431\u044b\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0432 \u043d\u0438\u0445, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c.

\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u044b\u043c. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b |e \u0438 |raw \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043e\u0431\u043e\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445, \u0438\u043b\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0432 \u0442\u0435\u0433\u0438 {% autoescape %} Twig.

\u0421\u043c. \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e Twig \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/","title":"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0434\u043e Grav 1.7","text":""},{"location":"advanced/grav-development/grav-17-upgrade-guide/#rukovodstvo-po-obnovleniiu-do-grav-1-7","title":"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0434\u043e Grav 1.7","text":"

Grav 1.7 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u043f\u0443\u0442\u044c \u043a Grav 2.0. \u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432:

  • Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u044b: \u041d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445.
  • \u0421\u0435\u0440\u0432\u0435\u0440 Symfony: \u0417\u0430\u043f\u0443\u0441\u043a Grav \u0431\u0435\u0437 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432: \u0410\u0434\u043c\u0438\u043d\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432.
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432: \u0410\u0434\u043c\u0438\u043d\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432.
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0430 ACL \u0430\u0434\u043c\u0438\u043d\u043a\u0438: \u041f\u043e\u043b\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 CRUD \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0435\u0434\u0438\u0430: \u041f\u043e\u0434\u0434\u0435\u0436\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 webp, \u043b\u0435\u043d\u0438\u0432\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u043e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435: \u041d\u043e\u0432\u044b\u0439 \u0442\u0435\u0433 {% cache %} \u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.
  • \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 XSS \u0432 \u0444\u043e\u0440\u043c\u0430\u0445: \u0424\u043e\u0440\u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432 \u043d\u0438\u0445 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 XSS. \u0421\u043c. \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.
  • \u041b\u0443\u0447\u0448\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0442\u043b\u0430\u0434\u043a\u0438: \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f Clockwork, \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Twig \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Tideways XHProf \u2014 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PHP.

\u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043b\u044e\u0434\u0435\u0439 Grav 1.7 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043d\u043e, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#naibolee-chastye-problemy","title":"\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b","text":"

\u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0440\u0430\u043d\u0435\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432. \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Grav \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0435\u0433\u043e, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u043b\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0432\u043e \u0432\u0441\u0435\u0439 \u0430\u0434\u043c\u0438\u043d\u043a\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e. \u042d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Grav 1.7, \u0438 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u043e, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0434\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435, \u0430 \u043d\u0435 \u0441\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438.

\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0435\u043a\u0446\u0438\u0438 \u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 Grav \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 Flex \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c PageInterface, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u044f\u0432\u043d\u044b\u043c\u0438 Pages \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.

\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0441\u0435\u043a\u0446\u0438\u0435\u0439 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0441\u0435\u043a\u0446\u0438\u0435\u0439 \u0410\u0434\u043c\u0438\u043d\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438...

\u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0435\u043a\u0446\u0438\u0438 \u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u041f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0435\u043a\u0446\u0438\u0438 \u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#html-otobrazhaetsia-na-vashem-saite-kak-kod-a-ne-kak-html-kak-predpolagalos","title":"HTML \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u043a\u0430\u043a \u043a\u043e\u0434, \u0430 \u043d\u0435 \u043a\u0430\u043a HTML, \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c.","text":"

\u0422\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e auto-escaping, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u0442\u0438\u043d\u043d\u043e \u0432 Grav 1.7. \u042d\u0442\u043e \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e 1.7, \u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 Twig \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043e\u0434 Twig \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0435 \u0441\u0430\u0439\u0442 \u0434\u043e 1.7 \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0435 \u043a\u0430\u043a\u0438\u043c-\u043b\u0438\u0431\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f GPM, \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.

\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0441\u0435\u043a\u0446\u0438\u0435\u0439 Twig \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438...

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#poluchenie-oshibok-o-nedopustimom-yaml","title":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u043c YAML.","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 Symfony, \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 YAML \u0441\u0442\u0430\u043b \u0441\u0442\u0440\u043e\u0436\u0435, \u0447\u0435\u043c \u0432 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0434\u043e 1.7.\u0427\u0442\u043e\u0431\u044b \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c, \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u0440\u0441\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 Yaml. \u042d\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c \u0434\u043e Grav 1.7 \u0447\u0435\u0440\u0435\u0437 GPM, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.

\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0441\u0435\u043a\u0446\u0438\u0435\u0439 YAML \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438...

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#adminka-otobrazhaetsia-s-neperevedennymi-strokami","title":"\u0410\u0434\u043c\u0438\u043d\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0435\u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438","text":""},{"location":"advanced/grav-development/grav-17-upgrade-guide/#oshibki-pri-sokhranenii-ili-nerabotaiushchie-plaginy-adminki","title":"\u041e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0430\u0434\u043c\u0438\u043d\u043a\u0438.","text":"\u0412 Grav 1.7 \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 Flex Pages \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u043a \u043e\u0431\u044b\u0447\u043d\u044b\u043c Grav Pages \u043c\u043e\u0436\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0432\u0430\u0448\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Flex Objects \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f Pages (Admin)."},{"location":"advanced/grav-development/grav-17-upgrade-guide/#chertezhi-stranits-perestaiut-rabotat-ili-vydaiut-oshibku-o-tsikle","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u0432\u044b\u0434\u0430\u044e\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u043e \u0446\u0438\u043a\u043b\u0435","text":"Grav 1.7.8 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u0435. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u043f\u0430\u043f\u043a\u0435 blueprints/pages/, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439, \u043a\u0430\u043a \u0438 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0442\u0435\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043c\u0435\u0441\u044c \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 blueprints/ \u0438 blueprints/pages, \u0447\u0442\u043e \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043b\u0438\u0431\u043e \u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044e \u043f\u043e\u043b\u0435\u0439 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043b\u0438\u0431\u043e \u043a \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435: Loop detected while extending blueprint file."},{"location":"advanced/grav-development/grav-17-upgrade-guide/#rukovodstvo-po-bystromu-obnovleniiu","title":"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e","text":"

Grav 1.7 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 PHP 7.3.6 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 PHP 7.4.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#yaml","title":"YAML","text":"

\u041f\u0430\u0440\u0441\u0435\u0440 Grav 1.7 YAML \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u043e\u0433, \u0438 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0432\u0430\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0430\u0439\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e bin/gpm \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 YAML.

\u0427\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 user/config/system.yaml:

strict_mode:\n  yaml_compat: true\n

\u0438\u043b\u0438 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u2192 \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e -> \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 YAML

\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e Grav 1.6 \u0438\u043c\u0435\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u041f\u0430\u0440\u0441\u0438\u043d\u0433 YAML, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav 1.7 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 YAML Symfony 4.4, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 YAML, \u0447\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Grav. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b YAML, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c YAML. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, Grav \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u0440\u0441\u0435\u0440\u0430 3.4, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.

\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 CLI bin/grav yamllinter \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u0410\u0434\u043c\u0438\u043d\u043a\u0430 > \u0421\u0435\u0440\u0432\u0438\u0441 > \u041e\u0442\u0447\u0451\u0442\u044b \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 YAML.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#twig","title":"Twig","text":"

Grav 1.7 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Twig. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0430\u0439\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e bin/gpm \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430.

\u0427\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 user/config/system.yaml:

twig:\n  autoescape: false\nstrict_mode:\n  twig_compat: true\n

\u0438\u043b\u0438 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u2192 \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e -> \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 TWIG

\u0418, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e!

\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e Grav 1.6 \u0438\u043c\u0435\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e Twig. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u043d\u0435\u0439 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c!

\u0428\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 Twig \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 1.43, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Twig 2.13. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Twig, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0432 \u0432\u0430\u0448\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Twig. \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e Grav 1.6 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u0432 \u044d\u0442\u043e\u043c.

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445:

  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0442\u0435\u0433 Twig {% cache %}, \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0449\u0438\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 twigcache.
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 Twig-\u0444\u0443\u043d\u043a\u0446\u0438\u044f array_diff()
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 Twig-\u0444\u0443\u043d\u043a\u0446\u0438\u044f template_from_string()
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 Twig-\u0444\u0443\u043d\u043a\u0446\u0438\u044f svg_image() \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 SVG \u0432 Twig
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0430 Twig-\u0444\u0443\u043d\u043a\u0446\u0438\u044f url(), \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 (true) \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f URL-\u0430\u0434\u0440\u0435\u0441 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c false
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d Twig-\u0444\u0438\u043b\u044c\u0442\u0440 |array \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043c toArray()
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0430 Twig-\u0444\u0443\u043d\u043a\u0446\u0438\u044f authorize() \u0447\u0442\u043e\u0431\u044b \u043b\u0443\u0447\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d Twig-\u0444\u0438\u043b\u044c\u0442\u0440 |yaml_serialize: \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 JsonSerializable \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f external.html.twig, default.html.twig \u0438 modular.html.twig
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 {% script 'file.js' at 'bottom' %} \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u043e\u0433\u043e in 'bottom'
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#formy","title":"\u0424\u043e\u0440\u043c\u044b","text":"

Grav 1.7 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0430\u0439\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e bin/gpm \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0440\u043e\u0433\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.

\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u0433\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430: \u0412\u043d\u0443\u0442\u0440\u0438 \u0444\u043e\u0440\u043c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 validation: strict \u0431\u044b\u043b\u043e \u043d\u0435 \u0442\u0430\u043a\u0438\u043c \u0441\u0442\u0440\u043e\u0433\u0438\u043c, \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u0434\u0435\u044f\u043b\u0438\u0441\u044c, \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438. \u0421\u0442\u0440\u043e\u0433\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0444\u043e\u0440\u043c \u043b\u044e\u0431\u044b\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439, \u0438 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Grav 1.7. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u0441\u0442\u0440\u043e\u0433\u0438\u043c\u0438, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.

\u0427\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432user/config/system.yaml:

strict_mode:\n  blueprint_compat: true\n

\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438 XSS \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432\u043e \u0432\u0441\u0435\u0445 \u0444\u043e\u0440\u043c\u0430\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0421\u043c. \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0438 \u043f\u043e\u043b\u044f.

\u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u043e\u043f\u0446\u0438\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 system.strict_mode.blueprint_compat: true \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f validation: strict. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430, \u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0432\u0441\u0435\u043c \u0441\u0432\u043e\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e validation: strict. \u0415\u0441\u043b\u0438 \u0434\u0430, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u0444\u043e\u0440\u043c\u0430.

\u042d\u0442\u043e\u0442 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d \u0432 Grav 2.0.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#sredy-i-multisaity","title":"\u0421\u0440\u0435\u0434\u044b \u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0430\u0439\u0442\u044b","text":"

Grav 1.7 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u0430\u043f\u043a\u0443 user://env. \u0421\u0442\u0430\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0432 \u043e\u0434\u043d\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e.

Grav 1.7 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u043c\u043d\u043e\u0433\u043e\u0441\u0430\u0439\u0442\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0434\u043e\u043a\u0435\u0440\u043e\u0432 \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c\u0438 \u043e\u0442 \u0434\u043e\u043c\u0435\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435. \u0418\u043b\u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0444\u0430\u0439\u043b setup.php \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043b\u0438\u0431\u043e \u0432 GRAV_ROOT/setup.php, \u043b\u0438\u0431\u043e \u0432 GRAV_ROOT/GRAV_USER_PATH/setup.php. \u0412\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0440\u0435\u0434 \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c\u0438 git, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043f\u043a\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#uchetnye-zapisi","title":"\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438","text":"

\u0412 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0435 Flex-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:

  • \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
  • \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439

\u0424\u0443\u043d\u043a\u0446\u0438\u044f Flex-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0435\u0449\u0451 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#stranitsy","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u044b\u043b\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043e \u0441 Flex-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438:

  • \u041f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a: \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432.
  • \u041b\u0443\u0447\u0448\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430: CRUD ACL \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446
  • \u041b\u0443\u0447\u0448\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430

\u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418

\u041c\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 404 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u043d\u0430 \u043d\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438, \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u043f\u043e\u0434 \u043d\u0435\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0443\u044e, \u0432\u0438\u0434\u0438\u043c\u0443\u044e \u0434\u043e\u0447\u0435\u0440\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u042d\u0442\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c.

\u0424\u0443\u043d\u043a\u0446\u0438\u044f Flex-\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0435\u0449\u0451 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#multiiazychnost","title":"\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c","text":"

Grav 1.7 \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u0420\u0430\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0441 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u0441\u0442\u0430\u0440\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u0441\u043a\u0430\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e, \u0447\u0442\u043e \u043d\u0435\u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0430\u0441\u044c, \u043d\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u043e\u0433\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u044f\u0437\u044b\u043a.

\u041d\u043e\u0432\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u044f\u0437\u044b\u043a\u0443 \u0441\u0430\u0439\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 system.languages.content_fallback.

\u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f 404 Not Found.

\u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418

\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 system.yaml \u0438\u043b\u0438 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u042f\u0437\u044b\u043a\u0438 > \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#media","title":"\u041c\u0435\u0434\u0438\u0430","text":"

\u0412 Grav 1.7 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b:

  • \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 webp
  • Markdown: \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 loading=lazy \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 system.images.defaults \u0438\u043b\u0438 \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 Markdown: ?loading=lazy
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (noprocess) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0445 \u0441\u0441\u044b\u043b\u043e\u043a/\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 http://foo.com/page?id=foo&target=_blank&noprocess=id
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#cli","title":"CLI","text":"

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b:

  • \u0412\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b --env \u0438 --lang, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e (-e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442).
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043d\u043e\u0432\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 CLI bin/grav server \u0434\u043b\u044f \u043b\u0435\u0433\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 Symfony \u0438\u043b\u0438 PHP.
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b cron \u0432 Scheduler \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 -r <job-id> \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b CLI \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u044f.
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 CLI bin/grav yamllinter, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043e\u043f\u0446\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043b\u0438\u043d\u0442\u0438\u043d\u0433\u043e\u043c YAML \u043d\u0430 \u0432\u0441\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u0438\u043b\u0438 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0430\u043f\u043a\u0435.
  • \u041e\u0448\u0438\u0431\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 CLI/GPM \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u0434 (\u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0431\u043e\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b).
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#konfiguratsiia","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 .md, \u0435\u0441\u043b\u0438 \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 false: * system.yaml: languages.include_default_lang_file_extension: true|false * \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u042f\u0437\u044b\u043a\u0438 > Include default language in file extension

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430: * system.yaml: languages.content_fallback: \u0421\u043c. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u044f\u0437\u044b\u043a\u043e\u0432 * \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u042f\u0437\u044b\u043a\u0438 > Content Language Fallback

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u043e\u043f\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 debugbar \u0438 clockwork * system.yaml: debugger.provider: clockwork|debugbar * \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a > Debugger Provider

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u043e\u043f\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 * system.yaml: debugger.censored: false|true * \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a > Censor Sensitive Data

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f validation: strict * system.yaml: strict_mode.blueprint_compat: true|false * \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e > Blueprint Compatibility

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 HTTP_X_FORWARDED (\u0445\u043e\u0441\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) * system.yaml: http_x_forwarded.protocol: true|false * \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e > HTTP_X_FORWARDED_PROTO Enabled * system.yaml: http_x_forwarded.host: true|false * \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e > HTTP_X_FORWARDED_HOST Enabled * system.yaml: http_x_forwarded.port: true|false * \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e > HTTP_X_FORWARDED_PORT Enabled * system.yaml: http_x_forwarded.ip: true|false * \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0421\u0438\u0441\u0442\u0435\u043c\u0430 > \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e > HTTP_X_FORWARDED IP Enabled

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 security.sanitize_svg \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 SVG. * security.yaml: sanitize_svg: true|false * Admin: Configuration > Security > Sanitize SVG

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#razrabotchikam","title":"\u0420\u0410\u0417\u0420\u0410\u0411\u041e\u0422\u0427\u0418\u041a\u0410\u041c","text":""},{"location":"advanced/grav-development/grav-17-upgrade-guide/#otladka","title":"\u041e\u0442\u043b\u0430\u0434\u043a\u0430","text":"
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 Clockwork (\u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043b\u044f Tideways XHProf, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PHP
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Twig \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 Clockwork.
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#ispolzovanie-avtozagruzchika-kompozera","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043a\u043e\u043c\u043f\u043e\u0437\u0435\u0440\u0430","text":"
  • \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d bin/composer.phar \u0434\u043e 2.0.2, \u0441\u0430\u043c\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0439
  • \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u0430\u0439\u043b composer.json \u0432 \u0441\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 composer update --no-dev (\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e):

    composer.json
    {\n    \"name\": \"getgrav/grav-plugin-example\",\n    \"type\": \"grav-plugin\",\n    \"description\": \"Example plugin for Grav CMS\",\n    \"keywords\": [\"example\", \"plugin\"],\n    \"homepage\": \"https://github.com/getgrav/grav-plugin-example\",\n    \"license\": \"MIT\",\n    \"authors\": [\n        {\n            \"name\": \"...\",\n            \"email\": \"...\",\n            \"homepage\": \"...\",\n            \"role\": \"Developer\"\n        }\n    ],\n    \"support\": {\n        \"issues\": \"https://github.com/getgrav/grav-plugin-example/issues\",\n        \"docs\": \"https://github.com/getgrav/grav-plugin-example/blob/master/README.md\"\n    },\n    \"require\": {\n        \"php\": \">=7.1.3\"\n    },\n    \"autoload\": {\n        \"psr-4\": {\n            \"Grav\\\\Plugin\\\\Example\\\\\": \"classes/\",\n            \"Grav\\\\Plugin\\\\Console\\\\\": \"cli/\"\n        },\n        \"classmap\":  [\n            \"example.php\"\n        ]\n    },\n    \"config\": {\n        \"platform\": {\n            \"php\": \"7.1.3\"\n        }\n    }\n}\n

    \u0421\u043c. Composer schema

  • \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432\u043c\u0435\u0441\u0442\u043e require \u0432 \u043a\u043e\u0434\u0435:

    example.php
    <?php\n\n/**\n * @return array\n */\npublic static function getSubscribedEvents(): array\n{\n    return [\n        'onPluginsInitialized' => [\n            // This is only required in Grav 1.6. Grav 1.7 automatically calls $plugin->autolaod() method.\n            ['autoload', 100000],\n        ]\n    ];\n}\n\n/**\n * Composer autoload.\n *\n * @return \\Composer\\Autoload\\ClassLoader\n */\npublic function autoload(): \\Composer\\Autoload\\ClassLoader\n{\n    return require __DIR__ . '/vendor/autoload.php';\n}\n
  • \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b: $plugin->autoload() \u0438 $theme->autoload() \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430

  • \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 require \u0438\u043b\u0438 include \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#chertezhi-plaginov-tem-blueprints-yaml","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432/\u0442\u0435\u043c (blueprints.yaml)","text":"
  • \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435:
    slug: folder-name\ntype: plugin|theme\n
  • \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438 \u0441\u0432\u043e\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u042f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Grav \u043b\u0438\u0431\u043e \u043d\u0430 1.6, \u043b\u0438\u0431\u043e \u043d\u0430 1.7 \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0430\u0448 \u043a\u043e\u0434/vendor \u0434\u043e PHP 7.1

    dependencies:\n    - { name: grav, version: '>=1.6.0' }\n
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b themes \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Grav 1.7.8 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u0435. \u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438 \u0438\u0437 blueprints/ \u0432 blueprints/pages/, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u043e\u0439. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c Grav \u043d\u0430 >=1.7.8.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#sessii","title":"\u0421\u0435\u0441\u0441\u0438\u0438","text":"
  • \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0435\u0430\u043d\u0441\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0435\u0439 \u0441\u0435\u0430\u043d\u0441\u0430
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 Session::refreshrateId() \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0435\u0439 \u0441\u0435\u0430\u043d\u0441\u0430
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#kontrol-dostupa","title":"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430","text":"
  • user.authorize() \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0431\u044b\u043b \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d (\u043f\u0440\u043e\u0448\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 2FA), \u0435\u0441\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 login \u0432 \u0441\u0432\u043e\u0435\u043c \u0438\u043c\u0435\u043d\u0438.
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0433\u043e ACL (CRUD)

  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u0443 user.authorize() \u0438 Flex object.isAuthorized() \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0442\u043a\u0430\u0437\u0430: false \u0438 null.

    \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c: $user->authorize($action) === false (PHP) \u0438\u043b\u0438 user.authorize(action) is same as(false) (Twig).

    \u0414\u043b\u044f \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c !user->authorize($action) (PHP) \u0438\u043b\u0438 not user.authorize(action) (Twig).

    \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043e\u0442\u043a\u0430\u0437\u0430 \u043f\u0443\u0442\u0435\u043c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442: user.authorize(action1) ?? user.authorize(action2) ?? user.authorize(action3).

    \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f Twig authorize() \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u0440\u0435\u0436\u043d\u0435\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435!

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#stranitsy_1","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f external.html.twig, default.html.twig \u0438 modular.html.twig
  • \u0410\u0434\u043c\u0438\u043d\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Flex-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Flex-Objects)
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f Flex Pages
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f Flex Pages
  • \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 Pages::dispatch() \u0432\u043c\u0435\u0441\u0442\u043e Pages::find()
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 Pages::getCollection()
  • \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0430 \u043b\u043e\u0433\u0438\u043a\u0430 collection() \u0438 evaluate() \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0430 Page \u0432 \u043a\u043b\u0430\u0441\u0441 Pages

  • \u0423\u0421\u0422\u0410\u0420\u0415\u041b\u041e $page->modular() \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 $page->isModule()

  • \u0423\u0421\u0422\u0410\u0420\u0415\u041b\u041e PageCollectionInterface::nonModular() \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 PageCollectionInterface::pages()
  • \u0423\u0421\u0422\u0410\u0420\u0415\u041b\u041e PageCollectionInterface::modular() \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 PageCollectionInterface::modules()

  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 null \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 Page::modular() \u0438 Page::modularTwig() \u0434\u043b\u044f \u043f\u0430\u043f\u043e\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0432\u0430\u0448 \u043a\u043e\u0434, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0435\u0433\u043e \u043d\u0430 false \u0438\u043b\u0438 null.

  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u0412\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \\Grav\\Common\\Page\\Interfaces\\PageInterface \u0432\u043c\u0435\u0441\u0442\u043e \\Grav\\Common\\Page\\Page \u0432 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432
  • \u0410\u0434\u043c\u0438\u043d\u043a\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Flex-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 $page->topParent() \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0441\u0430\u043c\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u043c\u0435\u0441\u0442\u043e null
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 $page->header() \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \\Grav\\Common\\Page\\Header \u0432\u043c\u0435\u0441\u0442\u043e stdClass, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u0430 (Flex \u043f\u0440\u043e\u0442\u0438\u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e)
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#media_1","title":"\u041c\u0435\u0434\u0438\u0430","text":"
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 MediaTrait:: freeMedia() \u0434\u043b\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439 (\u0438 \u043f\u0430\u043c\u044f\u0442\u0438)
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 Media \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PSR-7
  • \u0421\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u041c\u0435\u0434\u0438\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442\u0441\u044f Getters, \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 $media->$filename \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 $media[$filename]!
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#markdown","title":"Markdown","text":"
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d Parsedown \u0434\u043e 1.7 \u0434\u043b\u044f Parsedown-Extra 0.8. \u041f\u043b\u0430\u0433\u0438\u043d\u044b, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0438\u0435 Parsedown, \u043c\u043e\u0433\u0443\u0442 \u043d\u0443\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0432 \u0432\u0438\u0434\u0435 HTML
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 Excerpts::processLinkHtml()
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#polzovateli","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438","text":"
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Flex-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 (\u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c)
  • \u0410\u0434\u043c\u0438\u043d\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Flex-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Flex-Objects)
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u044b Flex-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438: \u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u043c \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Flex \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u044b Flex-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438: ACL \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439
  • \u041c\u0435\u0442\u043e\u0434 UserInterface::authorize() \u043f\u0440\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0435 null \u0438\u043c\u0435\u0435\u0442 \u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0438 false, \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f
  • \u0423\u0421\u0422\u0410\u0420\u0415\u041b\u041e \\Grav\\Common\\User\\Group \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 $grav['user_groups'], \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e Flex UserGroup
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u0412\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \\Grav\\Common\\User\\Interfaces\\UserInterface \u0432\u043c\u0435\u0441\u0442\u043e \\Grav\\Common\\User\\User \u0432 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#flex","title":"Flex","text":"
  • \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0441\u0441\u044b Flex Framework \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u043f\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u0438\u043c\u0435\u043d Grav\\Common\\Flex\\Types\\Generic
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d $grav['flex'] \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u043e \u0432\u0441\u0435\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c Flex
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 FlexRegisterEvent, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a $grav['flex']
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 hasFlexFeature() \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043b\u0438 FlexObject \u0438\u043b\u0438 FlexCollection \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 getFlexFeatures() \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 FlexObject \u0438\u043b\u0438 FlexCollection
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 FlexObject::refresh() \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 FlexStorage::getMetaData() \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0435\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 FlexDirectoryInterface
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e\u0438\u0441\u043a\u0430 same_as \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex
  • \u041c\u0435\u0442\u043e\u0434 $page->header() \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Flex Pages \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \\Grav\\Common\\Page\\Header, \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 Page \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 stdClass
  • \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434 PageCollectionInterface::nonModular() \u0432 PageCollectionInterface::pages(), \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c
  • \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434 PageCollectionInterface::modular() \u0432 PageCollectionInterface::modules(), \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c
  • FlexDirectory::getObject() \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430
  • \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0433\u0438\u0431\u043a\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430
  • \u0423\u0421\u0422\u0410\u0420\u0415\u041b\u0418 FlexDirectory::update() \u0438 FlexDirectory::remove()
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u0412\u0441\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0442\u0438\u043f\u043e\u0432 Flex \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u044b \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e Grav\\Common\\Flex
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 FlexStorageInterface::getStoragePath() \u0438 getMediaPath() \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c null
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u041e\u0431\u044a\u0435\u043a\u0442\u044b Flex \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0438\u0445 \u0435\u0433\u043e \u043d\u0435\u0442; \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043a\u043b\u044e\u0447
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 FlexStorageInterface::getMetaData()
  • \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b edit_list.html.twig \u0432 \u043f\u043e\u043b\u0435 \u0444\u043e\u0440\u043c\u044b, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u043f\u0438\u0441\u043a\u0430
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#multiiazychnost_1","title":"\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c","text":"
  • \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u0430\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430 Route
  • \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u044b: \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 MODULAR \u0432 MODULE \u0432\u0435\u0437\u0434\u0435
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 Language::getPageExtensions(), \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u044f\u0437\u044b\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 Language::getFallbackPageExtensions() \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043a \u044f\u0437\u044b\u043a\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0441\u0435 \u044f\u0437\u044b\u043a\u0438
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#multisait","title":"\u041c\u0443\u043b\u044c\u0442\u0438\u0441\u0430\u0439\u0442","text":"
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0441\u0430\u0439\u0442\u043e\u0432/\u0441\u0440\u0435\u0434 \u0432 \u043f\u0430\u043f\u043a\u0435 user/env
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#serializatsiia","title":"\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f","text":"
  • \u0412\u0441\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e PHP 7.4. \u0421\u0442\u0430\u0440\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b Serializable \u0442\u0435\u043f\u0435\u0440\u044c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u043c\u0438 (final) \u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u044b.
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#chertezhi","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438","text":"
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0444\u0438\u043b\u044c\u0442\u0440 flatten_array, \u0447\u0442\u043e\u0431\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u043e\u043b\u044f
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 security@: or: [admin.super, admin.pages] \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0418/\u0418\u041b\u0418)
  • \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439: \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 validate: value_type: bool|int|float|string|trim \u0432 array \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430
  • \u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445 \u0435\u0441\u0442\u044c \u043f\u0430\u043f\u043a\u0430 \u0441 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u043c\u0438, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043e\u0437\u0434\u043d\u043e. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u044d\u0442\u043e:

    <?php\nclass MyPlugin extends Plugin\n{\n    /** @var array */\n    public $features = [\n        'blueprints' => 0, // Use priority 0\n    ];\n}\n
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#sobytiia","title":"\u0421\u043e\u0431\u044b\u0442\u0438\u044f","text":"
  • \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 Symfony EventDispatcher \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u0435\u0440\u0442\u043a\u0438 rockettheme/toolbox.
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 $grav->dispatchEvent() \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439 PSR-14
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 PluginsLoadedEvent, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0431\u044b\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 SessionStartEvent, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u0435\u0430\u043d\u0441\u0430
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 FlexRegisterEvent, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a $grav['flex']
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 PermissionsRegisterEvent, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a $grav['permissions']
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onAfterCacheClear
  • \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onAdminTwigTemplatePaths, \u0442\u0430\u043a \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c:

    <?php\npublic function onAdminTwigTemplatePaths($event)\n{\n    // This code breaks all the other plugins in admin, including Flex Objects\n    $event['paths'] = [__DIR__ . '/admin/themes/grav/templates'];\n}\n
    \u043d\u043e:
    <?php\npublic function onAdminTwigTemplatePaths($event)\n{\n    // Add plugin template path for admin.\n    $paths = $event['paths'];\n    $paths[] = __DIR__ . '/admin/themes/grav/templates';\n    $event['paths'] = $paths;\n}\n
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#javascript","title":"JavaScript","text":"
  • \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u0430\u043a\u0435\u0442 JQuery \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 3.5.1
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#raznoe","title":"\u0420\u0430\u0437\u043d\u043e\u0435","text":"
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d Utils::functionExists(): \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 PHP 8 function_exists()
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0445\u0435\u043b\u043f\u0435\u0440\u044b Utils::isAssoc() \u0438 Utils::isNegative()
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 Utils::simpleTemplate() \u0434\u043b\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 Utils::fullPath() \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0443, \u043f\u043e\u0442\u043e\u043a\u0443 \u0438 \u0442. \u0434.
  • \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0432 CSVFormatter::decode()
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f Security::sanitizeSVG()
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 $grav->close(), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 Folder::countChildren(), \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438
  • \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 File
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043c\u0435\u0442\u043e\u0434 Route::getBase()
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u0414\u0435\u043b\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b Route \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c\u0438. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c: {% set route = route.withExtension('.html') %} (\u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 withX) \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439.
  • \u041b\u0443\u0447\u0448\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 Content-Encoding \u0432 Apache, \u043a\u043e\u0433\u0434\u0430 \u0441\u0436\u0430\u0442\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f Uri::getAllHeaders()
  • \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 JsonFormatter \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#cli_1","title":"CLI","text":"
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u041c\u043d\u043e\u0433\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442 Grav \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u0443 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e
    • \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442 Grav 1.6.21 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c Grav \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438
    • \u0412\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 `serve():
    • \u0412\u044b\u0437\u044b\u0432\u0430\u0439\u0442\u0435 $this->setLanguage($langCode); \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u0435\u0449\u0451, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0437\u044b\u043a (\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e)
    • \u0412\u044b\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:
      • $this->initializeGrav(); \u0423\u0436\u0435 \u0432\u044b\u0437\u0432\u0430\u043d, \u0435\u0441\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b\u0430 \u0432\u0432\u0435\u0434\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 bin/plugin
      • $this->initializePlugins(); \u042d\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 grav, \u043f\u043b\u0430\u0433\u0438\u043d\u044b (\u0434\u043e onPluginsInitialized)
      • $this->initializeThemes(); \u042d\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 grav, \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u0443
      • $this->initializePages(); \u042d\u0442\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 grav, \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0442\u0435\u043c\u0443 \u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446.
  • \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a \u043a\u043b\u0430\u0441\u0441\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434 CLI \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0438\u043d\u0430\u0447\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u043c\u0435\u043d (\u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c!)
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#ispolzuemye-biblioteki","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438","text":"
  • \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b Symfony \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 4.4, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435.
  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 bin/grav yamllinter, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043b\u044e\u0431\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 YAML \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0430\u0448\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b).
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#plaginy","title":"\u041f\u041b\u0410\u0413\u0418\u041d\u042b","text":""},{"location":"advanced/grav-development/grav-17-upgrade-guide/#adminka","title":"\u0410\u0434\u043c\u0438\u043d\u043a\u0430","text":"
  • \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u043f\u0446\u0438\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f

  • \u041d\u0410\u0420\u0423\u0428\u0415\u041d\u0418\u0415 \u041e\u0411\u0420\u0410\u0422\u041d\u041e\u0419 \u0421\u041e\u0412\u041c\u0415\u0421\u0422\u0418\u041c\u041e\u0421\u0422\u0418 \u0430\u0434\u043c\u0438\u043d\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c frontend-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

    \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0437\u044b\u0432\u0430\u0439\u0442\u0435 $grav['admin']->enablePages() \u0438\u043b\u0438 {% do admin.enablePages() %} \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c. \u042d\u0442\u043e\u0442 \u0432\u044b\u0437\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437.

    \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Flex-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 Flex \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445, \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435.

  • \u0410\u0434\u043c\u0438\u043d\u043a\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Flex \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0432\u0441\u0435 \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442.

  • \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u043e\u0447\u0438\u0449\u0430\u0435\u0442 \u043a\u044d\u0448 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u0432\u0441\u0435\u0433\u043e \u043a\u044d\u0448\u0430!

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#iadro-shortkoda","title":"\u042f\u0434\u0440\u043e \u0448\u043e\u0440\u0442\u043a\u043e\u0434\u0430","text":"
  • \u0423\u0421\u0422\u0410\u0420\u0415\u041b\u041e \u041a\u0430\u0436\u0434\u044b\u0439 \u0448\u043e\u0440\u0442\u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u043c\u0435\u0442\u043e\u0434 init(), \u043a\u043b\u0430\u0441\u0441\u044b \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#ustranenie-voznikshikh-problem","title":"\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c","text":""},{"location":"advanced/grav-development/grav-17-upgrade-guide/#oshibka-shablon-flex-objects-html-twig-dlia-stranitsy-ne-naiden","title":"\u041e\u0428\u0418\u0411\u041a\u0410: \u0428\u0430\u0431\u043b\u043e\u043d flex-objects.html.twig \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e Grav 1.7, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c content-edit. \u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d, \u043e\u0448\u0438\u0431\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442\u044c \u0441\u0430\u043c\u0430 \u0441\u043e\u0431\u043e\u0439. \u0421\u043c. \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b #3169

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#neperevedennaia-adminka","title":"\u041d\u0435\u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d\u043d\u0430\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0430","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:

\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a PLUGIN_ADMIN.CONFIGURATION, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432 PLUGIN_ADMIN.LANGUAGES, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 PLUGIN_ADMIN.LANGUAGE_TRANLATIONS \u043d\u0430 PLUGIN_ADMIN.YES:

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#chertezhi-stranits-perestaiut-rabotat-v-adminke","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u0432\u043e\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u043e\u043b\u044f \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0432\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b\u0445 \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u0415\u0441\u043b\u0438 \u0442\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043d\u0435 \u0432\u0430\u043c\u0438, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0430\u0432\u0442\u043e\u0440\u0443 \u0442\u0435\u043c\u044b.

\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b \u0438\u0437 blueprints/ \u0432 blueprints/pages/ (\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f Grav 1.7.8+). \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Grav, \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442.

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#oshibka-loop-detected-while-extending-blueprint-file","title":"\u041e\u0448\u0438\u0431\u043a\u0430: Loop detected while extending blueprint file","text":"

\u0421\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u0446\u0438\u043a\u043b\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0441\u043c. \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441.

\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u0447\u0435\u0440\u0442\u0435\u0436 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430:

extends@:\n    type: [NAME]\n    context: 'blueprints://pages'\n

\u0433\u0434\u0435 [NAME] \u2014 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 (\u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f) \u0441\u0430\u043c\u043e\u0433\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430, \u043d\u0430 \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a

extends@: self@\n
"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#otsutstvuiut-stili-css-v-adminke","title":"\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0442\u0438\u043b\u0438 CSS \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435","text":"

\u0421\u043e\u043e\u0431\u0449\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Grav 1.7 \u0438 Admin 1.10 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c imagecreate. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0435\u0433\u043e, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442\u044c \u0441\u0430\u043c\u0430 \u0441\u043e\u0431\u043e\u0439. \u0421\u043c. \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b #2035

"},{"location":"advanced/grav-development/grav-17-upgrade-guide/#vozvrat-k-poslednei-versii-grav-1-6","title":"\u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Grav 1.6","text":"

\u0425\u043e\u0442\u044f \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0440\u0435\u0448\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0443 \u0432\u0430\u0441, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e Grav 1.7 \u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043b\u0451\u0433\u043a\u0438\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c, \u0431\u0443\u0434\u0443\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439, \u0438 \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a Grav 1.6 \u0431\u044b\u0441\u0442\u0440\u043e.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0430\u0439\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav 1.7:

wget -q https://getgrav.org/download/core/grav-update/1.6.31 -O tmp/grav-update-v1.6.31.zip\nwget -q https://getgrav.org/download/plugins/admin/1.9.19 -O tmp/grav-plugin-admin-v1.9.19.zip\nunzip tmp/grav-update-v1.6.31.zip -d tmp\nunzip tmp/grav-plugin-admin-v1.9.19.zip -d tmp\ncp -rf tmp/getgrav-grav-plugin-admin-5d86394/* user/plugins/admin/\ncp -rf tmp/grav-update/* ./\n

\u041f\u043e \u0441\u0443\u0442\u0438, \u0437\u0434\u0435\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Grav 1.6 \u0438 Admin 1.9 \u043f\u043e\u0432\u0435\u0440\u0445 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u041f\u0430\u043f\u043a\u0443 user/ \u044d\u0442\u043e \u043d\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0448 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u044e\u0442.

\u0414\u043b\u044f \u0442\u0435\u0445, \u0443 \u043a\u043e\u0433\u043e \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a CLI, \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u044b grav-update-v1.6.31.zip \u0438 grav-plugin-admin-1.9.19.zip. \u0420\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u0441\u0432\u043e\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0417\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 FTP/SFTP-\u043a\u043b\u0438\u0435\u043d\u0442, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b Grav \u0432 \u0432\u0430\u0448 WEBROOT \u0438 \u0444\u0430\u0439\u043b\u044b \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0432 WEBROOT/user/plugins/admin.

"},{"location":"advanced/groups-and-permissions/","title":"\u0413\u0440\u0443\u043f\u043f\u044b \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f","text":""},{"location":"advanced/groups-and-permissions/#gruppy-i-razresheniia","title":"\u0413\u0440\u0443\u043f\u043f\u044b \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f","text":"

\u0421\u043c. \u0427\u0430\u0412\u043e \u043f\u043e \u0430\u0434\u043c\u0438\u043d\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438

"},{"location":"advanced/groups-and-permissions/#opredelenie-grupp","title":"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0433\u0440\u0443\u043f\u043f","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0440\u0443\u043f\u043f. \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c.

\u0413\u0440\u0443\u043f\u043f\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0432 \u0444\u0430\u0439\u043b\u0435 user/config/groups.yaml. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0435\u0449\u0451 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0435\u0433\u043e.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:

registered:\n  icon: users\n  readableName: 'Registered Users'\n  description: 'The group of registered users'\n  access:\n    site:\n      login: true\npaid:\n  readableName: 'Paid Members'\n  description: 'The group of paid members'\n  icon: money\n  access:\n    site:\n      login: true\n      paid: true\nadministrators:\n  groupname: administrators\n  readableName: Administrators\n  description: 'The group of administrators'\n  icon: child\n  access:\n    admin:\n      login: true\n    site:\n      login: true\n

\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c 3 \u0433\u0440\u0443\u043f\u043f\u044b.

"},{"location":"advanced/groups-and-permissions/#vkliuchenie-polzovatelia-v-gruppu","title":"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0443","text":"

\u041a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0432 \u0433\u0440\u0443\u043f\u043f\u0443.

\u041f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435

groups:\n  - paid\n

\u0432 \u0444\u0430\u0439\u043b yaml \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/accounts.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0440\u0443\u043f\u043f:

groups:\n  - administrators\n  - another-group\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0433\u0440\u0443\u043f\u043f\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

"},{"location":"advanced/groups-and-permissions/#razresheniia","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f","text":"

\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u0435, \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0443 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c site.paid, \u0434\u043e\u0431\u0430\u0432\u0438\u0432:

access:\n  site:\n    paid: true\n

\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u0433\u0440\u0443\u043f\u043f\u044b \u0432 user/config/groups.yaml.

\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u044d\u0442\u0443 \u0433\u0440\u0443\u043f\u043f\u0443, \u043e\u043d \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 site.paid: true.

\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0433\u0440\u0443\u043f\u043f\u0430\u043c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0438 \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.

"},{"location":"advanced/groups-and-permissions/#tonkaia-nastroika-razreshenii-na-urovne-polzovatelia","title":"\u0422\u043e\u043d\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","text":"

\u0412\u044b, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0440\u0443\u043f\u043f \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0434\u043e\u0431\u0430\u0432\u0438\u0432

access:\n  site:\n    paid: false\n

\u0432 \u0444\u0430\u0439\u043b user.yaml.

\u0421\u043c. \u0427\u0430\u0412\u043e \u043f\u043e \u0430\u0434\u043c\u0438\u043d\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u0430

"},{"location":"advanced/multisite-setup/","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0430\u0439\u0442\u0430","text":""},{"location":"advanced/multisite-setup/#nastroika-multisaita","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0430\u0439\u0442\u0430","text":"

\u0412 Grav \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043c\u043d\u043e\u0433\u043e\u0441\u0430\u0439\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439. \u041c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445 Grav.

"},{"location":"advanced/multisite-setup/#chto-takoe-mnogosaitovaia-ustanovka","title":"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043c\u043d\u043e\u0433\u043e\u0441\u0430\u0439\u0442\u043e\u0432\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430?","text":"

\u041c\u043d\u043e\u0433\u043e\u0441\u0430\u0439\u0442\u043e\u0432\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0442\u044c\u044e \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435.

Grav \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0441\u0440\u0435\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u043c\u043d\u043e\u0433\u043e\u0441\u0430\u0439\u0442\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0438 \u043e\u0442\u043a\u0443\u0434\u0430 Grav \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b.

\u041f\u043e\u043b\u043d\u0430\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0430\u0439\u0442\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u0430\u043a \u0438 \u043e\u0442\u043a\u0443\u0434\u0430 Grav \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b.

"},{"location":"advanced/multisite-setup/#trebovaniia-k-ustanovke-grav-multisite","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 Grav Multisite","text":"

\u0421\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043c\u043d\u043e\u0433\u043e\u0441\u0430\u0439\u0442\u043e\u0432\u043e\u0439 \u0441\u0435\u0442\u0438 Grav \u2014 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u043e\u0432 \u0438 \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439, \u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0437-\u0437\u0430 \u043f\u0440\u0438\u0440\u043e\u0434\u044b \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0430\u0439\u0442\u043e\u0432 \u0432\u0430\u043c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f VPS \u0438\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u043e\u0441\u0442\u0430 \u0432\u0430\u0448\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432.

"},{"location":"advanced/multisite-setup/#nastroika-i-ustanovka","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430","text":"

\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u0442\u044c, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0430\u0448 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432, \u0442. \u0435. \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 Grav.

\u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432 \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0444\u0430\u0439\u043b\u0435 setup.php, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u0440\u043d\u0435 Grav.

"},{"location":"advanced/multisite-setup/#bystryi-start-dlia-nachinaiushchikh","title":"\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 (\u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445)","text":"

\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f setup.php \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432 \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u044d\u0442\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 (\u0433\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f) \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c Grav, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b (\u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u0442\u0435\u043c, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0442. \u0434.) \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 \u0432\u0430\u0448\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u0440\u043e\u0434\u0435

https://<subsite>.example.com   -->   user/sites/<subsite>.example.com\n
\u0438\u043b\u0438
https://example.com/<subsite>   -->   user/sites/<subsite>\n

\u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 user/env \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u00abuser\u00bb \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 user.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0438\u043b\u0438 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 user/env, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 config, pages, plugins \u0438 themes.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 \u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u044b \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c (\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0435) \u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u044b \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0432\u0430\u0448\u0438\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 user/env.

\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0440\u0435\u0448\u0438\u0442\u0435, \u043a\u0430\u043a\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442.

"},{"location":"advanced/multisite-setup/#snippety","title":"\u0421\u043d\u0438\u043f\u043f\u0435\u0442\u044b","text":"

\u0414\u043b\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u044b, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b setup_subdomain.php, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438, \u0444\u0430\u0439\u043b setup_subdirectory.php \u0432 \u0432\u0430\u0448 setup.php.

\u0424\u0430\u0439\u043b setup.php \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u0449\u0435\u043d \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 Grav, \u0442\u0443 \u0436\u0435 \u043f\u0430\u043f\u043a\u0443, \u0433\u0434\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 index.php, README.md \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0430\u0439\u043b\u044b Grav.

setup_subdomain.php
<?php\n/**\n * Multisite setup for subsites accessible via sub-domains.\n *\n * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!\n */\n\nuse Grav\\Common\\Utils;\n\n// Get subsite name from sub-domain\n$environment = isset($_SERVER['HTTP_HOST'])\n    ? $_SERVER['HTTP_HOST']\n    : (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost');\n// Remove port from HTTP_HOST generated $environment\n$environment = strtolower(Utils::substrToString($environment, ':'));\n$folder = \"env/{$environment}\";\n\nif ($environment === 'localhost' || !is_dir(ROOT_DIR . \"user/{$folder}\")) {\n    return [];\n}\n\nreturn [\n    'environment' => $environment,\n    'streams' => [\n        'schemes' => [\n            'user' => [\n               'type' => 'ReadOnlyStream',\n               'prefixes' => [\n                   '' => [\"user/{$folder}\"],\n               ]\n            ]\n        ]\n    ]\n];\n

setup_subdirectory.php:

<?php\n/**\n * Multisite setup for sub-directories or path based\n * URLs for subsites.\n *\n * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!\n */\n\nuse Grav\\Common\\Filesystem\\Folder;\n\n// Get relative path from Grav root.\n$path = isset($_SERVER['PATH_INFO'])\n   ? $_SERVER['PATH_INFO']\n   : Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR);\n\n// Extract name of subsite from path\n$name = Folder::shift($path);\n$folder = \"env/{$name}\";\n$prefix = \"/{$name}\";\n\nif (!$name || !is_dir(ROOT_DIR . \"user/{$folder}\")) {\n    return [];\n}\n\n// Prefix all pages with the name of the subsite\n$container['pages']->base($prefix);\n\nreturn [\n    'environment' => $name,\n    'streams' => [\n        'schemes' => [\n            'user' => [\n               'type' => 'ReadOnlyStream',\n               'prefixes' => [\n                   '' => [\"user/{$folder}\"],\n               ]\n            ]\n        ]\n    ]\n];\n

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 config/<lang-context>/site.yaml, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f setup_subdir_config_switch.php \u043d\u0438\u0436\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c yoursite.com/de-AT/index.html \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c config/de-AT/site.yaml, yoursite.com/de-CH/index.html \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c config/de-CH/site.yaml \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.

setup_subdir_config_switch.php:

<?php\n/**\n * Switch config based on the language context subdir\n *\n * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!\n */\n\nuse Grav\\Common\\Filesystem\\Folder;\n\n$languageContexts = [\n    'de-AT',\n    'de-CH',\n    'de-DE',\n];\n\n// Get relative path from Grav root.\n$path = isset($_SERVER['PATH_INFO'])\n    ? $_SERVER['PATH_INFO']\n    : Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR);\n\n// Extract name of subdir from path\n$name = Folder::shift($path);\n\nif (in_array($name, $languageContexts)) {\n    return [\n        'streams' => [\n            'schemes' => [\n                'config' => [\n                    'type' => 'ReadOnlyStream',\n                    'prefixes' => [\n                        '' => [\n                            'environment://config',\n                            'user://config/' . $name,\n                            'user://config',\n                            'system/config',\n                        ],\n                    ],\n                ],\n            ],\n        ],\n    ];\n}\n\nreturn [];\n
"},{"location":"advanced/multisite-setup/#gpm-menedzher-paketov-grav-i-neskolko-nastroek","title":"GPM (\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Grav) \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0438 \u0442\u0435\u043c\u0430\u043c\u0438 \u0432\u0430\u0448\u0438\u0445 \u043f\u043e\u0434\u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e GPM, \u0445\u0440\u0430\u043d\u0438\u0442\u0435 user/themes \u0438 user/plugins, \u0447\u0442\u043e\u0431\u044b GPM \u043f\u043e\u043b\u0443\u0447\u0430\u043b \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b \u0438\u0445 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435. \u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 user/env/my.site.com/themes \u0438\u043b\u0438 user/env/my.site.com/plugins. \u0417\u0430\u0442\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 yaml-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 user/env/my.site.com/config/plugins \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0430\u0439\u0442\u0430.

"},{"location":"advanced/multisite-setup/#rasshirennaia-konfiguratsiia-dlia-ekspertov","title":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f (\u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432)","text":"

\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f setup.php \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0432\u0443\u043c \u0432\u0430\u0436\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c: (i) $container, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0449\u0451 \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 Grav \u0438 (ii) $self, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430 ConfigServiceProvider.

\u0412\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u043d\u043e \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0444\u0430\u0439\u043b setup.php \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u043b\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0435 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044e \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0441\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c.

\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, setup.php \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0440\u0435\u0434\u044b environment \u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 streams (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u0441\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u041f\u043e\u0442\u043e\u043a\u0438):

<?php\n\nreturn [\n  'environment' => '<name>',            // \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\n  'streams' => [\n    'schemes' => [\n      '<stream_name>' => [              // \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430\n        'type' => 'ReadOnlyStream',     // \u041e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u0442\u043e\u043a\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 'ReadOnlyStream' \u0438\u043b\u0438 'Stream'\n        'prefixes' => [\n          '<prefix>' => [\n            '<path1>',\n            '<path2>',\n            '<etc>'\n          ]\n        ],\n        'paths' => [                    // \u041f\u0443\u0442\u0438 (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)\n          '<paths1>',\n          '<paths2>',\n          '<etc>'\n        ]\n      ]\n    ]\n  ]\n]\n

\u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u043d\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 URI, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u044e\u0431\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 (\u043f\u043e\u043b\u043d\u043e\u0439) \u043f\u043e\u0442\u0435\u0440\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"advanced/multisite-setup/#potoki","title":"\u041f\u043e\u0442\u043e\u043a\u0438","text":"

Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 URI-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043f\u0443\u0442\u0435\u0439 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0432 Grav. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0443\u0442\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u0442\u043e\u043a\u0438 \u0431\u044b\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

  • user:// - \u043f\u0430\u043f\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user/
  • page:// - \u043f\u0430\u043f\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user://pages/
  • image:// - \u043f\u0430\u043f\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user://images/, system://images/
  • account:// - \u043f\u0430\u043f\u043a\u0430 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user://accounts/
  • environment:// - \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432.
  • asset:// - \u043f\u0430\u043f\u043a\u0430 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 JS/CSS, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 assets/
  • blueprints:// - \u043f\u0430\u043f\u043a\u0430 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 environment://blueprints/, user://blueprints/, system://blueprints/
  • config:// - \u043f\u0430\u043f\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 environment://config/, user://config/, system://config/
  • plugins:// - \u043f\u0430\u043f\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user://plugins/
  • themes:// - \u043f\u0430\u043f\u043a\u0430 \u0442\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user://themes/
  • theme:// - \u043f\u0430\u043f\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 themes://antimatter/
  • languages:// - \u043f\u0430\u043f\u043a\u0430 \u044f\u0437\u044b\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 environment://languages/, user://languages/, system://languages/
  • user-data:// - \u043f\u0430\u043f\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user/data/
  • system:// - \u043f\u0430\u043f\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u0432\u0438\u0436\u043a\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 system/
  • cache:// - \u043f\u0430\u043f\u043a\u0430 \u043a\u044d\u0448\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 cache/, images/
  • log:// - \u043f\u0430\u043f\u043a\u0430 \u043b\u043e\u0433\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 logs/
  • backup:// - \u043f\u0430\u043f\u043a\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 backups/
  • tmp:// - \u043f\u0430\u043f\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 tmp/

\u041f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u0435\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u044b. Grav \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438 \u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f config/streams.yaml. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e.

\u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043f\u0443\u0442\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440, \u0433\u0434\u0435 \u043c\u044b \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u044d\u0448 \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u043d\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0432 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:

user/env/domain.com/config/streams.yaml:

schemes:\n  account:\n    type: ReadOnlyStream\n    prefixes:\n      '': ['environment://accounts']\n  page:\n    type: ReadOnlyStream\n    prefixes:\n      '': ['environment://user']\n  image:\n    type: Stream\n    prefixes:\n      '': ['environment://images', 'system://images/']\n  'user-data':\n    type: Stream\n    prefixes:\n      '': ['environment://data']\n  cache:\n    type: Stream\n    prefixes:\n      '': ['cache/domain.com']\n      images: ['images/domain.com']\n  log:\n    type: Stream\n    prefixes:\n      '': ['logs/domain.com']\n

In Grav streams are objects, mapping a set of physical directories of the system to a logical device. They are classified via their type attribute. For read-only streams that's the ReadOnlyStream type and for read-writeable streams that's the Stream type.

For example, if you use image://mountain.jpg stream, Grav looks up environment://images (user/env/domain.com/images) and system://images (system/images). This means that streams can be used to define other streams.

Prefixes allows you to combine several physical paths into one logical stream. If you look carefully at cache stream definition, it is a bit different. In this case cache:// resolves to cache, but cache://images resolves to images.

"},{"location":"advanced/multisite-setup/#servernaia-mnogosaitovaia-konfiguratsiia","title":"\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0441\u0430\u0439\u0442\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"

Grav 1.7 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.

\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0434\u043e\u0431\u043d\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b docker \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c\u0438 \u043e\u0442 \u0434\u043e\u043c\u0435\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435. \u0418\u043b\u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0412\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0443\u0442\u0435\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0440\u0435\u0434\u044b. \u041f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b, \u043b\u0438\u0431\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b PHP, \u043d\u043e \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c Grav.

\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 GRAV_SETUP_PATH AUTO DETECT \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c \u043a setup.php, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0444\u0430\u0439\u043b \u0438\u0437 GRAV_ROOT/setup.php \u0438 GRAV_ROOT/GRAV_USER_PATH/setup.php. GRAV_USER_PATH user \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430 user://. GRAV_CACHE_PATH cache \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430 cache://. GRAV_LOG_PATH logs \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430 log://. GRAV_TMP_PATH tmp \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430 tmp://. GRAV_BACKUP_PATH backup \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430 backup://.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u041b\u0443\u0447\u0448\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.

\u041e\u043d\u0438 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 setup.php. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f define(), \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0441 putenv(). \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b.

\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 GRAV_ENVIRONMENT DOMAIN NAME \u0418\u043c\u044f \u0441\u0440\u0435\u0434\u044b. \u041c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u0434\u043e\u043a\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0441\u0440\u0435\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0434\u043e\u043c\u0435\u043d\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 production \u0438 develop. GRAV_ENVIRONMENTS_PATH user://env \u041f\u0443\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0440\u0435\u0434, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 user://sites. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u043e\u0442 GRAV_ROOT. GRAV_ENVIRONMENT_PATH user://env/ENVIRONMENT \u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b."},{"location":"advanced/multisite-setup/#pereopredeleniia-konfiguratsii-na-osnove-servera","title":"\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0442\u0440\u043e\u0433\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044e (\u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e A-Z, a-z, 0-9 \u0438 _), \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043b\u043e\u0432\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0430 YAML \u0434\u043b\u044f \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438:

GRAV_CONFIG: true                           # If false, the configuration here will be ignored.\nGRAV_CONFIG_ALIAS__GITHUB: plugins.github   # Create alias GITHUB='plugins.github' to shorten the variable names below\nGRAV_CONFIG__GITHUB__auth__method: api      # Override config.plugins.github.auth.method = api\nGRAV_CONFIG__GITHUB__auth__token: xxxxxxxx  # Override config.plugins.github.auth.token = xxxxxxxx\n

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 __ (\u0434\u0432\u043e\u0439\u043d\u043e\u0435 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 Twig \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u0447\u043a\u0438 (.).

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0432 setup.php. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432\u043d\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:

user/setup.php:

<?php\n\n// Use following environment variables in your server configuration:\n//\n// DYNAMODB_SESSION_KEY: DynamoDb server key for the PHP session storage\n// DYNAMODB_SESSION_SECRET: DynamoDb server secret\n// DYNAMODB_SESSION_REGION: DynamoDb server region\n// GOOGLE_MAPS_KEY: Google Maps secret key\n\nreturn [\n    'plugins' => [\n        // This plugin does not exist\n        'dynamodb_session' => [\n            'credentials' => [\n                'key' => getenv('DYNAMODB_SESSION_KEY') ?: null,\n                'secret' => getenv('DYNAMODB_SESSION_SECRET') ?: null\n            ],\n            'region' => getenv('DYNAMODB_SESSION_REGION') ?: null\n        ],\n        // This plugin does not exist\n        'google_maps' => [\n            'key' => getenv('GOOGLE_MAPS_KEY') ?: null\n        ]\n    ]\n];\n

setup.php \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043b\u0438 \u0432\u0430\u0448\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0436\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442 \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b.

\u041f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 setup.php \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435:

Apache 2NGINX php-fpmNGINX php-cgiDockerPHP
<VirtualHost 127.0.0.1:80>\n    ...\n\n    SetEnv GRAV_SETUP_PATH         user/setup.php\n    SetEnv GRAV_ENVIRONMENT        production\n    SetEnv DYNAMODB_SESSION_KEY    JBGARDQ06UNJV00DL0R9\n    SetEnv DYNAMODB_SESSION_SECRET CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7\n    SetEnv DYNAMODB_SESSION_REGION us-east-1\n    SetEnv GOOGLE_MAPS_KEY         XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp\n</VirtualHost>\n
location / {\n    ...\n\n    fastcgi_param GRAV_SETUP_PATH         user/setup.php;\n    fastcgi_param GRAV_ENVIRONMENT        production;\n    fastcgi_param DYNAMODB_SESSION_KEY    JBGARDQ06UNJV00DL0R9;\n    fastcgi_param DYNAMODB_SESSION_SECRET CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7;\n    fastcgi_param DYNAMODB_SESSION_REGION us-east-1;\n    fastcgi_param GOOGLE_MAPS_KEY         XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp;\n}\n
location / {\n    ...\n\n    env[GRAV_SETUP_PATH]          = user/setup.php\n    env[GRAV_ENVIRONMENT]         = production\n    env[DYNAMODB_SESSION_KEY]     = JBGARDQ06UNJV00DL0R9\n    env[DYNAMODB_SESSION_SECRET]  = CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7\n    env[GDYNAMODB_SESSION_REGION] = us-east-1\n    env[GGOOGLE_MAPS_KEY]         = XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp\n}\n
web:\nenvironment:\n    - GRAV_SETUP_PATH=user/setup.php\n    - GRAV_ENVIRONMENT=production\n    - DYNAMODB_SESSION_KEY=JBGARDQ06UNJV00DL0R9\n    - DYNAMODB_SESSION_SECRET=CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7\n    - DYNAMODB_SESSION_REGION=us-east-1\n    - GOOGLE_MAPS_KEY=XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp\n
<?php\nputenv('GRAV_SETUP_PATH', 'user/setup.php');\nputenv('GRAV_ENVIRONMENT', 'production');\nputenv('DYNAMODB_SESSION_KEY', 'JBGARDQ06UNJV00DL0R9');\nputenv('DYNAMODB_SESSION_SECRET', 'CVjwH+QkfnPhKgVvJvrG24s0ABi343cJ7WTPxvb7');\nputenv('DYNAMODB_SESSION_REGION', 'us-east-1');\nputenv('GOOGLE_MAPS_KEY', 'XWIozB2R2GmYInTqZ6jnKuUrdELounUb4BIxYmp');\n

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0443 production, \u0445\u0440\u0430\u043d\u044f\u0449\u0443\u044e\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/env/production.

"},{"location":"advanced/performance-and-caching/","title":"\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","text":""},{"location":"advanced/performance-and-caching/#proizvoditelnost-i-keshirovanie","title":"\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","text":"

\u041e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 Grav \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u2014 \u044d\u0442\u043e \u0435\u0451 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u042d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 Grav, \u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432.

"},{"location":"advanced/performance-and-caching/#proizvoditelnost","title":"\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c","text":"
  1. \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 PHP \u0438\u043c\u0435\u0435\u0442 \u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c PHP opcache \u0438 usercache, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0442 Grav. \u0412 PHP 5.5 \u0438 5.6 Zend opcache \u0441 APCu user cache \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435.
  2. SSD-\u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0432\u0435\u0449\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043a\u044d\u0448\u0435 PHP, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 SSD-\u0434\u0438\u0441\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.
  3. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430. \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0433\u0438\u0431\u043a\u0438\u0435 \u0441\u0440\u0435\u0434\u044b \u00ab\u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e\u00bb \u0442\u0438\u043f\u0430. \u041e\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. Grav \u0432\u0441\u0451 \u0435\u0449\u0451 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 (\u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c Wordpress, Joomla \u0438 \u0442. \u0434.), \u041d\u043e \u0432\u0441\u0451 \u0436\u0435 \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0432\u0437\u043e\u0439\u0442\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430.
  4. \u0427\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u0430\u043c\u044f\u0442\u044c, \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Grav \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0430\u043c\u044f\u0442\u044c, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. Grav \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0431\u044a\u0435\u043c\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a \u0432\u0430\u0436\u0435\u043d \u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a \u0441\u0438\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0442\u0438\u043f \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c.
  5. \u041e\u0431\u0449\u0438\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u0435\u0448\u0435\u0432 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, Grav \u043c\u043e\u0436\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043e\u0431\u0449\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 (\u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0435 CMS), \u043d\u043e \u0434\u043b\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.
  6. \u041c\u043d\u043e\u0433\u043e\u044f\u0434\u0435\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b \u043b\u0443\u0447\u0448\u0435. \u0412\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0438 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b, \u043d\u043e \u043d\u0435 \u0442\u0430\u043a \u0441\u0438\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b.
  7. \u041f\u0430\u0440\u0441\u0435\u0440 PECL Yaml. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e PHP-\u043f\u0430\u0440\u0441\u0435\u0440\u0430 PECL Yaml \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 YAML \u043d\u0430 \u0446\u0435\u043b\u044b\u0445 400%! \u041d\u0430 \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0449\u0435\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c.

Getgrav.org \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u044a\u044f\u0434\u0435\u0440\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c\u0438, 16 \u0413\u0411 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0442\u0432\u0435\u0440\u0434\u043e\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u043e\u0431\u044a\u0451\u043c\u043e\u043c 6 \u0413\u0411. \u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c PHP 7.4 \u0441 Zend opcache \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043a\u044d\u0448\u0435\u043c APCu. \u041d\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432, \u043d\u043e \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u0441\u0440\u0435\u0434\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430.

"},{"location":"advanced/performance-and-caching/#parametry-keshirovaniia","title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f","text":"

\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 - \u044d\u0442\u043e \u043d\u0435\u043e\u0442\u044a\u0435\u043c\u043b\u0435\u043c\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f Grav, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430. \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Grav, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e Grav \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b.

Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0432\u0448\u0443\u044e \u0441\u0435\u0431\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Doctrine Cache. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e Grav \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 Doctrine Cache:

  • Auto (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) - \u041d\u0430\u0445\u043e\u0434\u0438\u0442 \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438
  • File - \u0425\u0440\u0430\u043d\u0438\u0442 \u0444\u0430\u0439\u043b\u044b \u043a\u044d\u0448\u0430 \u0432 \u043f\u0430\u043f\u043a\u0435 cache/
  • APC - https://php.net/manual/ru/book.apc.php
  • Memcache - https://php.net/manual/ru/book.memcache.php
  • Redis - https://redis.io
  • WinCache - https://www.iis.net/downloads/microsoft/wincache-extension

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u00abauto\u00bb. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f APC, \u0437\u0430\u0442\u0435\u043c WinCache, \u0437\u0430\u0442\u0435\u043c XCache \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, File. \u0412\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u0435\u0442\u0435 \u044f\u0432\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u044d\u0448 \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 user/config/system.yaml, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443.

"},{"location":"advanced/performance-and-caching/#tipy-keshirovaniia","title":"\u0422\u0438\u043f\u044b \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f","text":"

\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432 Grav \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 5 \u0442\u0438\u043f\u043e\u0432 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:

  1. \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 YAML \u0432 PHP.
  2. \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Core Grav \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.
  3. \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0432 Twig \u0432 \u0432\u0438\u0434\u0435 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 PHP.
  4. \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.
  5. \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS \u0438 JQuery \u0441 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439.

\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 YAML \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u043f\u0430\u043f\u043a\u0443 /cache. \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 /images.

"},{"location":"advanced/performance-and-caching/#keshirovanie-iadra-grav","title":"\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 Grav","text":"

\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 Grav \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 user/config/system.yaml:

cache:\n  enabled: true                        # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `true`, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\n  check:\n    method: file                       # \u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445: file|folder|hash|none\n  driver: auto                         # \u041e\u0434\u0438\u043d \u0438\u0437: auto|file|apc|xcache|memcache|wincache|redis\n  prefix: 'g'                          # \u0421\u0442\u0440\u043e\u043a\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u043a\u044d\u0448\u0430 (\u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b)\n

\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435 URL Grav, Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043f\u0430\u043f\u043a\u0435 user/pages, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u043b\u0438 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c.

\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u044d\u0448\u0430 \u043f\u0430\u043f\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0440\u0435\u0434\u0430\u0445. \u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0443\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043b\u0438 Grav \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u043f\u0446\u0438\u0438 folder.

\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (hash) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u0432 \u043d\u0435\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0435.

\u0415\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 (\u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439), \u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u044d\u0442\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 none \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443. \u0412\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448 \u043f\u043e\u0441\u043b\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 Production-only.

\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u043e\u0447\u0438\u0449\u0430\u0435\u0442 \u043a\u044d\u0448, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u043a\u044d\u0448\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043c\u0435\u0442\u043a\u0430\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u043f\u043e\u043a.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.

"},{"location":"advanced/performance-and-caching/#spetsialnye-parametry-memcache","title":"\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Memcache","text":"

\u0415\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 memcache \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 memcache. \u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 cache: \u0432 \u0432\u0430\u0448\u0435\u043c user/config/system.yaml:

cache:\n  ...\n  memcache:\n    server: localhost\n    port: 11211\n
"},{"location":"advanced/performance-and-caching/#spetsialnye-parametry-memcached","title":"\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Memcached","text":"

\u041f\u043e\u0434\u043e\u0431\u043d\u043e memcache, memcached \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 memcached \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 memcached. \u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 cache: \u0432 \u0432\u0430\u0448\u0435\u043c user/config/system.yaml:

cache:\n  ...\n  memcached:\n    server: localhost\n    port: 11211\n
"},{"location":"advanced/performance-and-caching/#spetsialnye-parametry-redis","title":"\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Redis","text":"

\u0415\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 redis \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 redis. \u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 cache: \u0432 \u0432\u0430\u0448\u0435\u043c user/config/system.yaml:

cache:\n  ...\n  redis:\n    server: localhost\n    port: 6379\n

\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043a\u0435\u0442:

cache:\n  ...\n  redis:\n    socket: '/tmp/redis.sock'\n

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 Redis \u0438\u043c\u0435\u0435\u0442 \u043f\u0430\u0440\u043e\u043b\u044c \u0438\u043b\u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:

cache:\n  ...\n  redis:\n    password: your-secret\n

\u0412\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f php-redis, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435.

"},{"location":"advanced/performance-and-caching/#spetsialnye-parametry-twig","title":"\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Twig","text":"

\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438 \u0441 \u043d\u0435\u0439 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.

twig:\n  cache: false                          # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `true`, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Twig\n  debug: true                           # \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 Twig\n  auto_reload: true                     # \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043a\u044d\u0448 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445\n  autoescape: false                     # \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 Twig\n

\u0414\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 debug, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c auto_reload, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e cache: check: method: none, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 .html.twig \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u044d\u0448.

"},{"location":"advanced/performance-and-caching/#keshirovanie-i-sobytiia","title":"\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f","text":"

\u041f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u0441\u0451 \u0435\u0449\u0451 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u042d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c onPageContentRaw, onPageProcessed, onPageContentProcessed, onTwigPageVariables \u0438 onFolderProcessed. \u042d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u043f\u0430\u043f\u043e\u043a \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438\u043b\u0438 \u043f\u0430\u043f\u043a\u0435. \u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437 \u0438\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f, \u043e\u043d\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0430 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"advanced/plugin-prioritization/","title":"\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0437\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":""},{"location":"advanced/plugin-prioritization/#prioritezatsiia-plaginov","title":"\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0437\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u041a\u043e\u0433\u0434\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u044e\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u043c. \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u041f\u043b\u0430\u0433\u0438\u043d\u044b > \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439), \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u00ab\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u00bb. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0438\u0441\u043b\u043e. \u0427\u0435\u043c \u0432\u044b\u0448\u0435 \u0447\u0438\u0441\u043b\u043e, \u0442\u0435\u043c \u0440\u0430\u043d\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a.

\u0412 \u0440\u0435\u0434\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0435 \u043a\u0430\u0441\u0430\u044f\u0441\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435, \u043a\u0430\u043a\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u043a\u0430\u043a. \u042d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0430\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b .php \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 onPluginsInitialized().

\u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b user/config/sizes.yaml. \u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

pluginName:\n    eventName:\n        handlerName: [integer]\n

\u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c essential, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435onPageInitialized, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e handlePage \u0441 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c 0. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0432\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442, \u0440\u0430\u0432\u043d\u044b\u0439 100. \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u0432\u043e\u0439 \u0444\u0430\u0439\u043b user/config/sizes.yaml \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

essential:\n    onPageInitialized:\n        handlePage: 100\n
"},{"location":"advanced/scheduler/","title":"\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a","text":""},{"location":"advanced/scheduler/#planirovshchik","title":"\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a","text":"

\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a Grav \u2014 \u044d\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0432 Grav 1.6, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043d\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435. \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 cron, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0441\u043b\u0443\u0436\u0431\u0443 cron \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0447\u0435\u0440\u0435\u0437 Grav.

\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u0434\u0430\u0447 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0422\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u0430\u043a \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u043a\u044d\u0448\u0430, \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f, \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0442. \u0434., \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430\u043c\u0438 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0439.

"},{"location":"advanced/scheduler/#ustanovka","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430","text":"

\u041f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0430 \u043f\u0443\u0442\u0438 \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0438 \u0435\u0433\u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u0447 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b bin/grav scheduler \u0432 \u0441\u043b\u0443\u0436\u0431\u0443 cron. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 - \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 CLI \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438:

$ bin/grav scheduler -i\n\nInstall Scheduler\n=================\n\n [ERROR] You still need to set up Grav's Scheduler in your crontab\n\n ! [NOTE] To install, run the following command from your terminal:\n\n (crontab -l; echo \"* * * * * cd /Users/andym/grav;/usr/local/bin/php bin/grav scheduler 1>> /dev/null 2>&1\") | crontab -\n

\u0412 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Mac \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u043d\u0430\u0436\u0430\u0442\u044c return.

\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043e\u0439\u0442\u0438 \u0432 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u043f\u043e\u0434 \u0442\u0435\u043c \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u0447\u0442\u043e \u0438 \u0432\u0430\u0448 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b schdeduler, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0437\u0430\u043f\u0438\u0441\u044c crontab \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, root), \u043b\u044e\u0431\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root, \u0430 \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f webserver, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c.

(crontab -l; echo \"* * * * * cd /Users/andym/grav;/usr/local/bin/php bin/grav scheduler 1>> /dev/null 2>&1\") | crontab -\n

\u0412\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0442\u0432\u0435\u0442\u0430, \u043d\u043e \u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 bin/grav scheduler -i:

bin/grav scheduler -i\n\nInstall Scheduler\n=================\n\n [OK] All Ready! You have already set up Grav's Scheduler in your crontab\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u0432 \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u2192 \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a.

"},{"location":"advanced/scheduler/#osnovy-planirovaniia","title":"\u041e\u0441\u043d\u043e\u0432\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f","text":"

\u0414\u043b\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0433\u0438\u0431\u043a\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c.

* * * * * *\n| | | | | |\n| | | | | +-- Year              (\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d: 1900-3000)\n| | | | +---- Day of the Week   (\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d: 1-7, 1 \u2014 \u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a)\n| | | +------ Month of the Year (\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d: 1-12)\n| | +-------- Day of the Month  (\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d: 1-31)\n| +---------- Hour              (\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d: 0-23)\n+------------ Minute            (\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d: 0-59)\n

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b:

0 * * * * \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432 \u0447\u0430\u0441 (\u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441 \u043d\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u043c\u0438\u043d\u0443\u0442\u0435) 0 0 * * * \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432 \u0434\u0435\u043d\u044c (\u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u0432 \u043f\u043e\u043b\u043d\u043e\u0447\u044c \u0438 \u0432 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u043c\u0438\u043d\u0443\u0442\u0443) 0 0 1 * * \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432 \u043c\u0435\u0441\u044f\u0446 (\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430 \u0432 \u043f\u043e\u043b\u043d\u043e\u0447\u044c \u0438 \u0432 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u043c\u0438\u043d\u0443\u0442\u0443) 0 0 1 1 * \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432 \u0433\u043e\u0434 (\u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u043d\u044c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u0432 \u043f\u043e\u043b\u043d\u043e\u0447\u044c \u0438 \u0432 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u043c\u0438\u043d\u0443\u0442\u0443)

\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438:

*/5 * * * * \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0435 5 \u043c\u0438\u043d\u0443\u0442

"},{"location":"advanced/scheduler/#fail-konfiguratsii","title":"\u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 bin/grav scheduler -j:

bin/grav scheduler -j\n\nScheduler Jobs Listing\n======================\n\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Job ID              \u2502 Command                            \u2502 Run At    \u2502 Status  \u2502 Last Run         \u2502 State   \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 cache-purge         \u2502 Grav\\Common\\Cache::purgeJob        \u2502 * * * * * \u2502 Success \u2502 2019-02-21 11:23 \u2502 Enabled \u2502\n\u2502 cache-clear         \u2502 Grav\\Common\\Cache::clearJob        \u2502 * * * * * \u2502 Success \u2502 2019-02-21 11:23 \u2502 Enabled \u2502\n\u2502 default-site-backup \u2502 Grav\\Common\\Backup\\Backups::backup \u2502 0 3 * * * \u2502 Ready   \u2502 Never            \u2502 Enabled \u2502\n\u2502 pages-backup        \u2502 Grav\\Common\\Backup\\Backups::backup \u2502 * 3 * * * \u2502 Success \u2502 2018-09-20 09:55 \u2502 Enabled \u2502\n\u2502 ls-job              \u2502 ls                                 \u2502 * * * * * \u2502 Success \u2502 2019-02-21 11:23 \u2502 Enabled \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n ! [NOTE] For error details run \"bin/grav scheduler -d\"\n

\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a Grav \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 user/config/scheduler.yaml, \u0438 \u0434\u043b\u044f \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043b\u044e\u0431\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0431\u044b\u043b\u043e enabled.

\u041d\u0438\u0436\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u043b\u0438 \u0438\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 disabled, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435.

status:\n  ls-job: enabled\n  cache-purge: enabled\n  cache-clear: enabled\n  default-site-backup: enabled\n  pages-backup: enabled\n

\u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043b\u044e\u0431\u044b\u0445 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0438\u043b\u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 /bin/grav scheduler -d:

bin/grav scheduler -d\n\nJob Details\n===========\n\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Job ID              \u2502 Last Run         \u2502 Next Run         \u2502 Errors \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 cache-purge         \u2502 2019-02-21 11:29 \u2502 2019-02-21 11:31 \u2502 None   \u2502\n\u2502 cache-clear         \u2502 2019-02-21 11:29 \u2502 2019-02-21 11:31 \u2502 None   \u2502\n\u2502 default-site-backup \u2502 Never            \u2502 2019-02-22 03:00 \u2502 None   \u2502\n\u2502 pages-backup        \u2502 2018-09-20 09:55 \u2502 2019-02-22 03:00 \u2502 None   \u2502\n\u2502 ls-job              \u2502 2019-02-21 11:29 \u2502 2019-02-21 11:31 \u2502 None   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n
"},{"location":"advanced/scheduler/#zapusk-zadanii-vruchnuiu","title":"\u0417\u0430\u043f\u0443\u0441\u043a \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0432\u0440\u0443\u0447\u043d\u0443\u044e","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 CLI \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0434\u0435\u043b\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438.

bin/grav scheduler\n

\u042d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u044f, \u043d\u043e \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f:

bin/grav scheduler -v\n
"},{"location":"advanced/scheduler/#sistemnye-zadaniia-grav","title":"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f Grav","text":"

\u042f\u0434\u0440\u043e Grav \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043c\u0435\u0441\u0442 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. \u041a \u043d\u0438\u043c \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f:

  • cache-purge \u2014 \u042d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 Grav, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u0441\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0441\u0442\u0435\u043a. \u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043b\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u043a\u044d\u0448\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u0441\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u044d\u0442\u0438\u043c, \u0430 \u0432\u0430\u0448\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e, \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c\u0441\u044f \u043c\u0435\u0441\u0442\u043e \u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0439\u0434\u0435\u0442 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f.

  • cache-clear \u2014 \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043a\u044d\u0448\u0430 \u2014 \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0430 bin/grav clear, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u0445\u043e\u0442\u0438\u0442\u0435 \u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u00ab\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e\u00bb \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u043a\u044d\u0448\u0430 \u0438\u043b\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 all, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 cache/ \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430.

  • default-site-backup \u2014 \u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u0432 \u043d\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Grav Backup. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438 \u043e\u043d\u0438 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f.

"},{"location":"advanced/scheduler/#polzovatelskie-zadaniia","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f","text":"

\u0412 Grav Scheduler \u043c\u043e\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0439. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 scheduler.yaml, \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u043c \u0432\u044b\u0448\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u0432\u044b\u0448\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 ls-job \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430:

custom_jobs:\n  ls-job:\n    command: ls\n    args: '-lah'\n    at: '* * * * *'\n    output: logs/cron-ls.out\n    output_mode: overwrite\n    email: user@email.com\n

\u041a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438/\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430. \u0422\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b command \u0438 at.

"},{"location":"advanced/scheduler/#zadaniia-predostavliaemye-plaginami","title":"\u0417\u0430\u0434\u0430\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438","text":"

\u041e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043c\u043e\u0449\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 Grav Scheduler \u2014 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f. \u041f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u2014 \u043f\u043b\u0430\u0433\u0438\u043d TNT Search. TNT Search \u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0431\u044b\u043b \u043f\u0440\u043e\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c. \u042d\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438, \u043d\u043e Grav Scheduler \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e.

\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onSchedulerInitialized(). \u0410 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043c\u0435\u0442\u043e\u0434 \u0432 \u0441\u0432\u043e\u0435\u043c \u0444\u0430\u0439\u043b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435:

<?php\n\npublic function onSchedulerInitialized(Event $e): void\n{\n    $config = $this->config();\n\n    if (!empty($config['scheduled_index']['enabled'])) {\n        $scheduler = $e['scheduler'];\n        $at = $config['scheduled_index']['at'] ?? '* * * * *';\n        $logs = $config['scheduled_index']['logs'] ?? '';\n        $job = $scheduler->addFunction('Grav\\Plugin\\TNTSearchPlugin::indexJob', [], 'tntsearch-index');\n        $job->at($at);\n        $job->output($logs);\n        $job->backlink('/plugins/tntsearch');\n    }\n}\n

\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 TNTSearch, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 Job \u0441 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 indexJob().

"},{"location":"advanced/yaml/","title":"\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 YAML","text":""},{"location":"advanced/yaml/#sintaksis-yaml","title":"\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 YAML","text":""},{"location":"advanced/yaml/#vvedenie","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":"

YAML \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 YAML Ain't Markup Language, \u0438 \u043e\u043d \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Grav \u0434\u043b\u044f \u0435\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

YAML \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 - \u044d\u0442\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e Markdown \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. \u041e\u043d \u043c\u0435\u043d\u0435\u0435 \u0441\u043b\u043e\u0436\u0435\u043d \u0438 \u043d\u0435\u0443\u043a\u043b\u044e\u0436, \u0447\u0435\u043c XML \u0438\u043b\u0438 JSON, \u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u043e\u0449\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0442\u0438\u043f \u043a\u043e\u0434\u0430, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a CSS, JavaScript \u0438 PHP.

YAML \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0441 \u043d\u0443\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041f\u043e \u0441\u0443\u0442\u0438, \u0444\u0430\u0439\u043b YAML \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f YAML \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 YAML \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u043e\u0432 \u044f\u0437\u044b\u043a\u043e\u0432.

\u041f\u043e \u0441\u0443\u0442\u0438, \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u0432\u043e\u0434\u0438\u0442\u0435 \u0432 \u0444\u0430\u0439\u043b YAML, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0432 Grav.

"},{"location":"advanced/yaml/#osnovnye-pravila-yaml","title":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 YAML","text":"

\u0415\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 YAML, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0434\u0432\u0443\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b YAML \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438/\u0438\u043b\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438.

  • \u0424\u0430\u0439\u043b\u044b YAML \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 .yaml, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432 Grav.
  • YAML \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443.
  • YAML \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044e. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e.
"},{"location":"advanced/yaml/#osnovnye-tipy-dannykh","title":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445","text":"

YAML \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 (\u0445\u0435\u0448\u0430\u043c\u0438/\u0441\u043b\u043e\u0432\u0430\u0440\u044f\u043c\u0438), \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438 (\u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438/\u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438) \u0438 \u0441\u043a\u0430\u043b\u044f\u0440\u0430\u043c\u0438 (\u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438/\u0447\u0438\u0441\u043b\u0430\u043c\u0438). \u0425\u043e\u0442\u044f \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e\u043c \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u044f\u0437\u044b\u043a\u0430\u043c\u0438, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u044d\u0442\u0438\u0445 \u0442\u0438\u043f\u0430\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u044e\u0434\u0430 \u0432\u0445\u043e\u0434\u044f\u0442: PHP, Python, Perl, JavaScript \u0438 Ruby.

"},{"location":"advanced/yaml/#skaliary","title":"\u0421\u043a\u0430\u043b\u044f\u0440\u044b","text":"

\u0421\u043a\u0430\u043b\u044f\u0440\u044b \u2014 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u0435. \u042d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0447\u0438\u0441\u043b\u0430, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u0421\u043a\u0430\u043b\u044f\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Yes, \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c (\u0447\u0438\u0441\u043b\u043e\u043c), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 5, \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430.

\u0421\u043a\u0430\u043b\u044f\u0440\u044b \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u0431\u044b \u0432\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0438\u043f\u043e\u0432 \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445, \u043e\u043d\u0438 \u0431\u044b \u0431\u044b\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u044b \u044d\u0442\u0438\u043c\u0438 \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u043c\u0438.

\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043a\u0430\u043b\u044f\u0440\u043e\u0432 \u043d\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u0432\u043e\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u043a\u0438 \u043f\u0440\u0435\u043f\u0438\u043d\u0430\u043d\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u0443\u0442\u0430\u0442\u044c \u0441 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c YAML (\u0442\u0438\u0440\u0435, \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u0438 \u0442. \u0434.), \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u0435 ' \u0438\u043b\u0438 \u0434\u0432\u043e\u0439\u043d\u044b\u0435 \" \u043a\u0430\u0432\u044b\u0447\u043a\u0438. \u0414\u0432\u043e\u0439\u043d\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 ASCII \u0438 Unicode.

integer: 25\nstring: \"25\"\nfloat: 25.0\nboolean: Yes\n

\u0421\u043b\u043e\u0432\u0430 true, false, null, ~ \u0438 \u0434\u0430\u0442\u044b \u0438\u043c\u0435\u044e\u0442 \u043e\u0441\u043e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 YAML. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0438\u0445 \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0442\u0438\u043f\u0430 null \u0438\u043b\u0438 \u0442\u0438\u043f\u0430 datetime. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0438 \u0441 \u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u0439, \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0445 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.

"},{"location":"advanced/yaml/#posledovatelnosti","title":"\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438","text":"

\u0412\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 Grav. \u042d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u043c \u0442\u0438\u0440\u0435.

- Cat\n- Dog\n- Goldfish\n

\u042d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0431\u0435\u043b \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0442\u0438\u0440\u0435 \u0432 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u0430\u0445. YAML \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u041d\u0415 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u0432. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u043d\u0438\u0436\u0435.

-\n - Cat\n - Dog\n - Goldfish\n-\n - Python\n - Lion\n - Tiger\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0435\u0449\u0451 \u0433\u043b\u0443\u0431\u0436\u0435, \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0440\u043e\u0432\u043d\u0435\u0439.

-\n -\n  - Cat\n  - Dog\n  - Goldfish\n

\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u0442\u0438\u043f\u0430\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0441\u043a\u0430\u043b\u044f\u0440\u044b.

"},{"location":"advanced/yaml/#sopostavleniia","title":"\u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f","text":"

\u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u043a\u043b\u044e\u0447\u0438 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0435 \u0438\u043c\u044f \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443.

animal: pets\n

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 pets \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043a\u043b\u044e\u0447\u043e\u043c animal. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a pets. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0442\u0438\u0440\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435 \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u043c, \u0434\u0435\u043b\u0430\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0440\u043e\u043a \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c\u0438, \u0430 \u043b\u0438\u043d\u0438\u044f \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f pets - \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c\u0438.

pets:\n - Cat\n - Dog\n - Goldfish\n
"},{"location":"advanced/yaml/#resursy-i-dopolnitelnaia-dokumentatsiia","title":"\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f","text":"

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e YAML, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435.

  • \u041f\u0440\u0438\u043c\u0435\u0440 YAML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u043e\u0442 Dave
  • \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f YAML 1.2
  • YAML Reference Card
  • \u0423\u0447\u0435\u0431\u043d\u0438\u043a YAML \u043e\u0442 Xavier Shay
  • YAMLLint (\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 YAML)
"},{"location":"basics/basic-tutorial/","title":"\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e","text":""},{"location":"basics/basic-tutorial/#kratkoe-rukovodstvo","title":"\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e","text":"

\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044f, \u0447\u0442\u043e \u0432\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 Grav \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438, \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u044d\u0442\u043e\u0439 CMS, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0441\u0435\u0431\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u0435\u0439.

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Grav \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0441 CMS \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u044f\u0441\u044c \u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 Grav \u0438 \u043b\u044e\u0431\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u0432\u0430\u0436\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f.

"},{"location":"basics/basic-tutorial/#osnovy-kontenta","title":"\u041e\u0441\u043d\u043e\u0432\u044b \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430","text":"

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0433\u0434\u0435 Grav \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435, \u043d\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u043d\u0430\u0448 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/pages/ \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 user/pages/ \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u043f\u0430\u043f\u043a\u0438: \u043f\u0435\u0440\u0432\u0430\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f 01.home, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u2014 02.typography. \u0427\u0438\u0441\u043b\u0430 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u0445 \u043f\u0430\u043f\u043e\u043a \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438, \u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439.

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0447\u0435\u0442\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u0430\u0448\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 01 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c 02, \u043d\u043e 00 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c 01.

\u0414\u0440\u0443\u0433\u0430\u044f \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u0435\u043b\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438, \u044d\u0442\u043e \u044f\u0432\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 Grav, \u0447\u0442\u043e \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u0430 \u0432 \u043c\u0435\u043d\u044e. \u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e . \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0430 \u0438\u0437 URL.

"},{"location":"basics/basic-tutorial/#nastroika-domashnei-stranitsy","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0412 \u0444\u0430\u0439\u043b\u0435 user/config/system.yaml \u0435\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0434\u0430\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Grav, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0435\u0441\u044c \u043d\u0430 \u043a\u043e\u0440\u0435\u043d\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430: https://yoursite.com.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0437\u0443\u0447\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435, \u0447\u0442\u043e \u043e\u043d \u0443\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c /home. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0442\u0430\u043a \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435.

"},{"location":"basics/basic-tutorial/#redaktirovanie-stranits","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b Grav \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 Markdown. Markdown \u2014 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 HTML. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u0436\u0438\u0440\u043d\u044b\u0439, \u043a\u0443\u0440\u0441\u0438\u0432, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438, \u0441\u043f\u0438\u0441\u043a\u0438 \u0438 \u0442. \u0434.), \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0432\u0441\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 HTML. \u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 Markdown \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0448\u0438\u0431\u043e\u043a, \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0442. \u0434.

\u041d\u0430 \u0434\u043e\u0441\u0443\u0433\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438, \u043d\u0443 \u0430 \u043f\u043e\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0434\u0430\u043b\u044c\u0448\u0435.

\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435. \u0424\u0430\u0439\u043b, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/pages/01.home/ \u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f default.md. \u0412\u0441\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u0442\u0435, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e \u0432 \u043f\u0430\u043f\u043a\u0435 user/pages/.

\u041f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

---\ntitle: Home\nbody_classes: title-center title-h1h2\n---\n# Say Hello to Grav!\n## installation successful...\n\nCongratulations! You have installed the **Base Grav Package** that provides a **simple page** and the default **Quark** theme to get you started.\n\n> If you see a **404 Error** when you click `Typography` in the menu, please refer to the [troubleshooting guide](/troubleshooting/page-not-found).\n

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u043b\u0435\u0433\u043a\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Markdown. \u0412\u0441\u0451, \u0447\u0442\u043e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 ---, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f YAML. \u042d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 .md, \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u043a\u0430\u043a YAML-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a (\u0441\u0435\u043a\u0446\u0438\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b).

title: Home\nbody_classes: title-center title-h1h2\n

\u042d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u0437\u0430\u0434\u0430\u0435\u0442 HTML-\u0442\u0435\u0433 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430). \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u043c\u0443 \u0438\u0437 \u0432\u0430\u0448\u0438\u0445 \u0442\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 page.title. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: menu: \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0443\u043d\u043a\u0442\u0430, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043c\u0435\u043d\u044e. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e.

# Say Hello to Grav!\n## installation successful...\n

\u0421\u0438\u043c\u0432\u043e\u043b # \u0438\u043b\u0438 \u0445\u044d\u0448 \u0432 Markdown \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b # \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <h1> \u0432 HTML. ## \u0438\u043b\u0438 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u0445\u044d\u0448 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0442\u0435\u0433 <h2>. \u0422\u0430\u043a \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e HTML-\u0442\u0435\u0433\u0430 <h6>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0448\u0435\u0441\u0442\u0438 \u0445\u044d\u0448\u0435\u0439: ###### \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a H6.

Congratulations! You have installed the **Base Grav Package** that provides a **simple page** and the default **Quark** theme to get you started.\n

\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0430\u0431\u0437\u0430\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0431\u044b \u0437\u0430\u0432\u0435\u0440\u043d\u0443\u0442 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0442\u0435\u0433\u0438 <p> \u043f\u0440\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 HTML. \u041c\u0430\u0440\u043a\u0435\u0440\u044b ** \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u0436\u0438\u0440\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 <strong>, \u0440\u0430\u043d\u0435\u0435 <b>, \u0432 HTML. \u041a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u043c\u0438 _.

> If you see a **404 Error** when you click `Typography` in the menu, please refer to the [troubleshooting guide](/troubleshooting/page-not-found).\n

\u042d\u0442\u043e\u0442 \u043e\u0431\u0437\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u0432\u0430\u0441 \u043e\u0441\u043d\u043e\u0432\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Markdown, \u043d\u043e \u043d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0437\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c \u0438 \u0432 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.

\u0412\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 .md \u0444\u0430\u0439\u043b\u044b \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF-8. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u043c\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438.

"},{"location":"basics/basic-tutorial/#dobavlenie-novoi-stranitsy","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 Grav \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u044d\u0442\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0448\u0430\u0433\u0430\u043c:

  1. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u043f\u0430\u043f\u043a\u0435 \u0441 \u0432\u0430\u0448\u0438\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438: user/pages/ \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044f\u0432\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u043f\u0430\u043f\u043a\u0443 03.mypage.
  2. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430:

    ---\ntitle: \u041c\u043e\u044f \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\n---\n
    # \u041c\u043e\u044f \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430!\n\n\u042d\u0442\u043e \u0442\u0435\u043b\u043e **\u043c\u043e\u0435\u0439 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b**, \u0438 \u044f \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0433\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 _Markdown_.\n
  3. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0435 user/pages/03.mypage/ \u043a\u0430\u043a default.md. \u042d\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 Grav \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0430 default (\u0444\u0430\u0439\u043b user/themes/quark/templates/default.html.twig \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435).

  4. \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043c\u0435\u043d\u044e.

\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u0432 \u043c\u0435\u043d\u044e \u043f\u043e\u0441\u043b\u0435 \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e \u0422\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043c\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u043d\u044e, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435: menu: \u041c\u043e\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0447\u0435\u0440\u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435.

\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c, \u0432\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 Grav. \u0421 Grav \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0439\u0442\u0435 \u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0438 \u0432\u0441\u0435\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u044d\u0442\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0432\u0430\u043c \u043b\u0438\u0431\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u0430 .htaccess (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Apache), \u043b\u0438\u0431\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 RewriteBase \u0432 \u0444\u0430\u0439\u043b\u0435 .htaccess. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0433\u043b\u0430\u0432\u0435 \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.

"},{"location":"basics/folder-structure/","title":"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a","text":""},{"location":"basics/folder-structure/#struktura-papok","title":"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Grav - \u044d\u0442\u043e CMS \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0438 \u043e\u0434\u043d\u0430 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0430. \u041d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

/assets\n/backup\n/bin\n/cache\n/images\n/logs\n/system\n/tmp\n/vendor\n/user\n

\u0418\u0442\u0430\u043a, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0433\u043b\u0443\u0431\u0438\u043c\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0430\u043f\u043e\u043a \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b:

"},{"location":"basics/folder-structure/#assets","title":"/assets","text":"

\u041f\u0430\u043f\u043a\u0430 assets \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0432 Grav \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 .css \u0438 .js \u0444\u0430\u0439\u043b\u043e\u0432.

\u042d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"basics/folder-structure/#backup","title":"/backup","text":"

\u041f\u0430\u043f\u043a\u0430 backup \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u043f\u043a\u043e\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 Grav.

"},{"location":"basics/folder-structure/#bin","title":"/bin","text":"

\u041f\u0430\u043f\u043a\u0430 bin \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Grav, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u042d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043e\u0442\u043b\u043e\u0436\u0438\u043c \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f.

"},{"location":"basics/folder-structure/#cache","title":"/cache","text":"

\u041f\u0430\u043f\u043a\u0430 cache \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f Grav \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u0415\u0441\u043b\u0438 Grav \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0443\u0447\u0448\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435. \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b Grav \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e.

\u042d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"basics/folder-structure/#images","title":"/images","text":"

Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0449\u043d\u043e\u0439, \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043b\u0435\u0442\u0443 \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u042d\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 images, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e, \u0435\u0441\u043b\u0438 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e \u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u043c \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c.

\u042d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u043a\u044d\u0448 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 user/pages/, user/themes/ \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 user/images/.

\u042d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"basics/folder-structure/#logs","title":"/logs","text":"

\u041a\u043e\u0433\u0434\u0430 Grav \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u043b\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043e\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0432 \u043f\u0430\u043f\u043a\u0435 logs.

"},{"location":"basics/folder-structure/#system","title":"/system","text":"

\u041f\u0430\u043f\u043a\u0430 system \u2014 \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u044f\u0434\u0440\u0430 Grav. \u0412\u0430\u043c \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Grav \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0435 \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Grav, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0433\u043b\u0430\u0432\u0430\u0445.

"},{"location":"basics/folder-structure/#tmp","title":"/tmp","text":"

\u041f\u0430\u043f\u043a\u0430 tmp \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Grav \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.

\u042d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"basics/folder-structure/#vendor","title":"/vendor","text":"

\u041f\u0430\u043f\u043a\u0430 vendor \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0430\u0436\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f Grav. \u042d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 \u043f\u0430\u043f\u043a\u0443 system \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0435.

\u041f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 Grav \u0441 GitHub \u043f\u0430\u043f\u043a\u0430 vendor \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0430\u043f\u043a\u0443 vendor, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 bin/grav install \u0438\u043b\u0438 composer install \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Grav. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430.

"},{"location":"basics/folder-structure/#user","title":"/user","text":"

\u042d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Grav. \u0412 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0433\u043b\u0443\u0431\u0438\u043c\u0441\u044f \u0432 \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443:

/user/accounts\n/user/blueprints\n/user/config\n/user/data\n/user/images\n/user/languages\n/user/pages\n/user/plugins\n/user/themes\n
"},{"location":"basics/folder-structure/#user-accounts","title":"/user/accounts","text":"

\u041f\u0430\u043f\u043a\u0430 account - \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430.

"},{"location":"basics/folder-structure/#user-blueprints","title":"/user/blueprints","text":"

\u041f\u0430\u043f\u043a\u0430 blueprints \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0430\u0448\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u0430.

"},{"location":"basics/folder-structure/#user-config","title":"/user/config","text":"

\u0424\u0430\u0439\u043b\u044b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 config \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430 \u0438 \u0431\u044b\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435.

"},{"location":"basics/folder-structure/#user-data","title":"/user/data","text":"

\u041f\u0430\u043f\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0437\u0436\u0435. \u0425\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d Forms, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0435\u0431-\u0444\u043e\u0440\u043c\u0443 \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u043b\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440.

"},{"location":"basics/folder-structure/#user-images","title":"/user/images","text":"

\u041f\u0430\u043f\u043a\u0430 images \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0442\u043e\u043a\u0430 image://.

"},{"location":"basics/folder-structure/#user-languages","title":"/user/languages","text":"

\u041f\u0430\u043f\u043a\u0430 languages \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430.

"},{"location":"basics/folder-structure/#user-pages","title":"/user/pages","text":"

\u042d\u0442\u043e \u0441\u0435\u0440\u0434\u0446\u0435 Grav. \u041f\u0430\u043f\u043a\u0430 pages - \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435.

"},{"location":"basics/folder-structure/#user-plugins","title":"/user/plugins","text":"

\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u044f\u0434\u0440\u043e Grav \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441 GetGrav.org/downloads/plugins, \u0438\u043b\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439.

"},{"location":"basics/folder-structure/#user-themes","title":"/user/themes","text":"

\u0422\u0435\u043c\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0432\u0430\u0448 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442. \u041e\u043d\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 HTML-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0430\u0448\u0435\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0442\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 Grav, \u043d\u043e \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0441 GetGrav.org/downloads/themes \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e.

"},{"location":"basics/getting-help/","title":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043c\u043e\u0449\u0438","text":""},{"location":"basics/getting-help/#poluchenie-pomoshchi","title":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043c\u043e\u0449\u0438","text":"

\u0425\u043e\u0442\u044f \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0441\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0437\u0434\u0435\u0441\u044c, \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043e Grav, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438. \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u0431\u044b\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043c\u043e\u0449\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432:

"},{"location":"basics/getting-help/#forum","title":"\u0424\u043e\u0440\u0443\u043c","text":"

\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u043e\u0440\u0443\u043c \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Discourse, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u0430\u0448\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b.

"},{"location":"basics/getting-help/#twitter","title":"Twitter","text":"

\u041c\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0437\u0430 \u043d\u0430\u043c\u0438 \u0432 Twitter \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0438\u043c \u043e \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u0445 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c Grav.

"},{"location":"basics/getting-help/#blog","title":"\u0411\u043b\u043e\u0433","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044e \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0432 \u0431\u043b\u043e\u0433\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Grav \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u043d\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u044b \u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c. \u0423 \u043d\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043b\u0430\u043d\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430\u043c\u0438 \u0438 \u0441\u043e\u0432\u0435\u0442\u0430\u043c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0442\u0434\u0430\u0447\u0443 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Grav.

"},{"location":"basics/getting-help/#github","title":"GitHub","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0431\u0449\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0438\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 Grav \u0432 \u0446\u0435\u043b\u043e\u043c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u043a\u0435\u0440 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0430 GitHub. \u041c\u044b \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0430\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0435 \u0437\u0434\u0435\u0441\u044c, \u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u0441 \u043d\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0442\u0435\u043c \u0438\u043b\u0438 \u043a\u0430\u0440\u043a\u0430\u0441\u043e\u0432, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.

"},{"location":"basics/getting-help/#chat-v-discord","title":"\u0427\u0430\u0442 \u0432 Discord","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u043c\u0438 \u0432 \u043f\u0440\u044f\u043c\u043e\u043c \u044d\u0444\u0438\u0440\u0435 \u0432 Discord. \u0412\u043b\u0438\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u0432 \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e Grav!

"},{"location":"basics/grav-configuration/","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":""},{"location":"basics/grav-configuration/#nastroika","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":"

\u0412\u0441\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b Grav \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 YAML \u0438 \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 .yaml. YAML \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u0435\u043d, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043e\u0447\u0435\u043d\u044c \u043b\u0451\u0433\u043a\u0438\u043c \u043a\u0430\u043a \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435.

\u0421\u043c. \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c > \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

"},{"location":"basics/grav-configuration/#sistemnaia-konfiguratsiia","title":"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"

Grav \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0438 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 system/config/system.yaml.

\u041e\u0434\u043d\u0430\u043a\u043e \u0432\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0434\u043e\u043b\u0436\u043d\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c user/config/system.yaml. \u041b\u044e\u0431\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0441 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443, \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

\u0412\u043e\u043e\u0431\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0432\u044b \u041d\u0418\u041a\u041e\u0413\u0414\u0410 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u0432 \u043f\u0430\u043f\u043a\u0435 system/. \u0412\u0441\u0451, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0442. \u0434.), \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044d\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432\u0430\u0448\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0442. \u0434.

\u0412\u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 system/config/system.yaml \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:

"},{"location":"basics/grav-configuration/#osnovnye-parametry","title":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","text":"
absolute_urls: false\ntimezone: ''\ndefault_locale:\nparam_sep: ':'\nwrapped_site: false\nreverse_proxy_setup: false\nforce_ssl: false\nforce_lowercase_urls: true\ncustom_base_url: ''\nusername_regex: '^[a-z0-9_-]{3,16}$'\npwd_regex: '(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,}'\nintl_enabled: true\nhttp_x_forwarded:\n  protocol: true\n  host: false\n  port: true\n  ip: true\n

\u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u0445. \u042d\u0442\u043e \u043e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0430\u0439\u0442\u0430, \u0435\u0433\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441 \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URL.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 absolute_urls: \u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 URL \u0434\u043b\u044f base_url timezone: \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c default_locale: \u042f\u0437\u044b\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e param_sep: \u042d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 Grav \u0432 URL. \u041d\u0435 \u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u044d\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0435. Grav \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 ; \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 Apache \u0432 Windows wrapped_site: \u0414\u043b\u044f \u0442\u0435\u043c/\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u0442\u044c, \u043e\u0431\u0435\u0440\u043d\u0443\u0442 \u043b\u0438 Grav \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false reverse_proxy_setup: \u0420\u0430\u0431\u043e\u0442\u0430 \u0432 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u043a\u0441\u0438 \u0441 \u043f\u043e\u0440\u0442\u0430\u043c\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043e\u0442 \u043f\u0440\u043e\u043a\u0441\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false force_ssl: \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, Grav \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 HTTPS (\u041f\u0420\u0418\u041c\u0415\u0427\u0410\u041d\u0418\u0415: \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435). \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false force_lowercase_urls: \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u043e \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false custom_base_url: \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 base_url \u0432\u0440\u0443\u0447\u043d\u0443\u044e username_regex: \u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0422\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0431\u0443\u043a\u0432\u044b, \u0446\u0438\u0444\u0440\u044b, \u0442\u0438\u0440\u0435, \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f. 3-16 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 pwd_regex: \u041f\u0430\u0440\u043e\u043b\u044c. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, \u043e\u0434\u043d\u0430 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0438 \u0441\u0442\u0440\u043e\u0447\u043d\u0430\u044f \u0431\u0443\u043a\u0432\u044b, \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 8+ \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 intl_enabled: \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0434\u043b\u044f \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f PHP (mod_intl) http_x_forwarded: \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 HTTP_X_FORWARD (Grav 1.7.0+)"},{"location":"basics/grav-configuration/#iazyki","title":"\u042f\u0437\u044b\u043a\u0438","text":"
languages:\n  supported: []\n  default_lang:\n  include_default_lang: true\n  include_default_lang_file_extension: true\n  pages_fallback_only: false\n  translations: true\n  translations_fallback: true\n  session_store_active: false\n  http_accept_language: false\n  override_locale: false\n  content_fallback: {}\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Languages \u0444\u0430\u0439\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0430\u0439\u0442\u0430. \u0412\u043e\u0442 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0430 \u0434\u043b\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0438 Languages \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 supported: \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: [en, fr, de, ru] default_lang: \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a. \u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 include_default_lang: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 lang \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u043e \u0432\u0441\u0435 URL. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false include_default_lang_file_extension: \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0442\u043e \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u0444\u0430\u0439\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u044f\u0437\u044b\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, .en.md). \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044f\u0437\u044b\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 .md. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false (Grav 1.7.0+) pages_fallback_only: \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false translations: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false translations_fallback: \u0417\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b, \u0435\u0441\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false session_store_active: \u0425\u0440\u0430\u043d\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0432 \u0441\u0435\u0441\u0441\u0438\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false http_accept_language: \u041f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u044f\u0437\u044b\u043a \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 http_accept_language \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false override_locale: \u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c \u0441 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false content_fallback: \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d, Grav \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. (Grav 1.7.0+)"},{"location":"basics/grav-configuration/#glavnaia-stranitsa","title":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","text":"
home:\n  alias: '/home'\n  hide_in_urls: false\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Home \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0443\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0430\u0439\u0442\u0430. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432 URL.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 alias: \u041f\u0443\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: /home \u0438\u043b\u0438 / hide_in_urls: \u0421\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432 URL. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false"},{"location":"basics/grav-configuration/#stranitsy","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"
pages:\n  type: regular\n  theme: quark\n  order:\n    by: default\n    dir: asc\n  list:\n    count: 20\n  dateformat:\n    default:\n    short: 'jS M Y'\n    long: 'F jS \\a\\t g:ia'\n  publish_dates: true\n  process:\n    markdown: true\n    twig: false\n  twig_first: false\n  never_cache_twig: false\n  events:\n    page: true\n    twig: true\n  markdown:\n    extra: false\n    auto_line_breaks: false\n    auto_url_links: false\n    escape_markup: false\n    special_chars:\n      '>': 'gt'\n      '<': 'lt'\n    valid_link_attributes:\n      - rel\n      - target\n      - id\n      - class\n      - classes\n  types: [html,htm,xml,txt,json,rss,atom]\n  append_url_extension: ''\n  expires: 604800\n  cache_control:\n  last_modified: false\n  etag: false\n  vary_accept_encoding: false\n  redirect_default_route: false\n  redirect_default_code: 302\n  redirect_trailing_slash: true\n  ignore_files: [.DS_Store]\n  ignore_folders: [.git, .idea]\n  ignore_hidden: true\n  hide_empty_folders: false\n  url_taxonomy_filters: true\n  frontmatter:\n    process_twig: false\n    ignore_fields: ['form','forms']\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Pages \u0444\u0430\u0439\u043b\u0430 system/config/system.yaml \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0442\u0435\u043c\u043e\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u0435\u0441\u044c \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0430\u0439\u0442\u0430, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Twig \u0438 Markdown \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0432\u043b\u0438\u044f\u044e\u0449\u0438\u0445 \u043d\u0430 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 type: \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f Flex-\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 flex \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0438\u043b\u0438 \u0436\u0435 regular \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u043d\u043e regular (Grav 1.7+) theme: \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0442\u0435\u043c\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u043d\u043e quark order: ... by: \u0423\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e default, alpha \u0438\u043b\u0438 date ... dir: \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, asc \u0438\u043b\u0438 desc list: ... count: \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 dateformat: ... default: \u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Grav \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0432 \u043f\u043e\u043b\u0435 date: ... short: \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 'jS M Y' ... long: \u0414\u043b\u0438\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 'F jS \\a\\t g:ia' publish_dates: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c/\u043e\u0442\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u0442. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false process: ... markdown: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 Markdown \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false ... twig: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 Twig \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false twig_first: \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c Twig \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 Markdown \u043f\u0440\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false never_cache_twig: \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u043d\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c/\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443 \u0432 system.yaml \u0438\u043b\u0438 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false events: ... page: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false ... twig: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f Twig. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false markdown: ... extra: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Markdown Extra (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f GitHub-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 Markdown). \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false ... auto_line_breaks: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0430\u0437\u0440\u044b\u0432\u044b \u0441\u0442\u0440\u043e\u043a. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false ... auto_url_links: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 HTML. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false ... escape_markup: \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0433\u0438 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false ... special_chars: \u0421\u043f\u0438\u0441\u043e\u043a \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0438\u0436\u0435 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: '>': 'gt' ... valid_link_attributes: \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0441\u044b\u043b\u043a\u0438 Markdown (Grav 1.7+) types: \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: [txt,xml,html,htm,json,rss,atom] append_url_extension: \u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435 \u043a \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446. (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: .html /path/page.html) expires: \u0412\u0440\u0435\u043c\u044f \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 (604800 \u0441\u0435\u043a\u0443\u043d\u0434 = 7 \u0434\u043d\u0435\u0439) (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 no cache \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e) cache_control: \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c \u0434\u043b\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u044d\u0448\u0430, \u0438\u043b\u0438 \u0438\u043c\u0435\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 cache-control last_modified: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0434\u0430\u0442\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u0435\u0442\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false etag: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u0433 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 Etag. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false vary_accept_encoding: \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a Vary: Accept-Encoding. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false redirect_default_route: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false redirect_default_code: \u041a\u043e\u0434 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 302 redirect_trailing_slash: \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c 302 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442 \u043d\u0430 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u043b\u0435\u0448 (/) URL ignore_files: \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: [.DS_Store] ignore_folders: \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043f\u0430\u043f\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: [.git, .idea] ignore_hidden: \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false hide_empty_folders: \u0415\u0441\u043b\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 \u043d\u0435\u0442 \u0444\u0430\u0439\u043b\u0430 .md, \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u0430. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false url_taxonomy_filters: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 URL \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false frontmatter: ... process_twig: \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0435\u043a\u0446\u0438\u044e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 Twig? \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false ... ignore_fields: \u041f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 Twig \u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: ['form','forms']"},{"location":"basics/grav-configuration/#kesh","title":"\u041a\u044d\u0448","text":"
cache:\n  enabled: true\n  check:\n    method: file\n  driver: auto\n  prefix: 'g'\n  purge_at: '0 4 * * *'\n  clear_at: '0 3 * * *'\n  clear_job_type: 'standard'\n  clear_images_by_default: false\n  cli_compatibility: false\n  lifetime: 604800\n  gzip: false\n  allow_webserver_gzip: false\n  redis:\n    socket: false\n    password:\n    database:\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Cache \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 enabled: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false check: ... method: \u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b: file, folder, hash \u0438 none. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 driver: \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043a\u044d\u0448\u0430. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b: auto, file, apcu, redis, memcache \u0438 wincache prefix: \u0421\u0442\u0440\u043e\u043a\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u043a\u044d\u0448\u0430 (\u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043a\u044d\u0448\u0430). \u041f\u0440\u0438\u043c\u0435\u0440: g purge_at: \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a: \u041a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u044d\u0448 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 cron at clear_at: \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a: \u041a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043e\u0447\u0438\u0449\u0430\u0442\u044c \u043a\u044d\u0448 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 cron at clear_job_type: \u0422\u0438\u043f \u0434\u043b\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0438. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b: standard | all clear_images_by_default: \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0435 \u043a\u044d\u0448\u0430, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true cli_compatibility: \u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u043d\u0435\u0440\u0433\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b (file, redis, memcache \u0438 \u0442. \u0434.) lifetime: \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 (0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e). 604800 \u2014 7 \u0434\u043d\u0435\u0439 gzip: Gzip \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u0436\u0430\u0442\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false allow_webserver_gzip: \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043d\u0430 Content-Encoding: identity, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c gzip, \u0445\u043e\u0442\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e onShutDown() \u0432\u043d\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0421\u043e\u0431\u044b\u0442\u0438\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e, \u043d\u043e \u043e\u043d\u043e \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442 \u0438\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e redis: ... socket: \u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0441\u043e\u043a\u0435\u0442\u0430 redis ... password: \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c ... database: \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445"},{"location":"basics/grav-configuration/#twig","title":"Twig","text":"
twig:\n  cache: true\n  debug: true\n  auto_reload: true\n  autoescape: false\n  undefined_functions: true\n  undefined_filters: true\n  umask_fix: false\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Twig \u043a \u0432\u0430\u0448\u0438\u043c \u0443\u0441\u043b\u0443\u0433\u0430\u043c \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c Twig \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 cache: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Twig. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false debug: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 Twig. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false auto_reload: \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043a\u044d\u0448 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false autoescape: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 Twig. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false undefined_functions: \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false undefined_filters: \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false umask_fix: \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Twig \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 755, \u044d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 775. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false"},{"location":"basics/grav-configuration/#aktivy","title":"\u0410\u043a\u0442\u0438\u0432\u044b","text":"
assets:\n  css_pipeline: false\n  css_pipeline_include_externals: true\n  css_pipeline_before_excludes: true\n  css_minify: true\n  css_minify_windows: false\n  css_rewrite: true\n  js_pipeline: false\n  js_pipeline_include_externals: true\n  js_pipeline_before_excludes: true\n  js_module_pipeline: false\n  js_module_pipeline_include_externals: true\n  js_module_pipeline_before_excludes: true\n  js_minify: true\n  enable_asset_timestamp: false\n  enable_asset_sri: false\n  collections:\n    jquery: system://assets/jquery/jquery-2.x.min.js\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Assets \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u0430\u043a\u0442\u0438\u0432\u043e\u0432 (JS, CSS).

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 css_pipeline: CSS-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u2014 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false css_pipeline_include_externals: \u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432 CSS-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false css_pipeline_before_excludes: \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c CSS-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u0435\u0440\u0435\u0434 \u043b\u044e\u0431\u044b\u043c\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false css_minify: \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c CSS \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false css_minify_windows: \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c Windows. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e false \u0438\u0437-\u0437\u0430 ThreadStackSize. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false css_rewrite: \u041f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 CSS \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false js_pipeline: JS-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u2014 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 JS-\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false js_pipeline_include_externals: \u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432 JS-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false js_pipeline_before_excludes: \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c JS-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u0435\u0440\u0435\u0434 \u043b\u044e\u0431\u044b\u043c\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false js_module_pipeline \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 JS-\u043c\u043e\u0434\u0443\u043b\u0435\u0439 - \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 JS-\u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false js_module_pipeline_include_externals \u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false js_module_pipeline_before_excludes \u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043f\u0435\u0440\u0435\u0434 \u043b\u044e\u0431\u044b\u043c\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false js_minify: \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c JS \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false enable_asset_timestamp: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0435\u0442\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false enable_asset_sri: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432 SRI. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false collections: \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: jquery: system://assets/jquery/jquery-3.x.min.js. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438"},{"location":"basics/grav-configuration/#oshibki","title":"\u041e\u0448\u0438\u0431\u043a\u0438","text":"
errors:\n  display: 0\n  log: true\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Errors \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u043e\u0448\u0438\u0431\u043e\u043a Grav.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 display: \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043b\u0438\u0431\u043e 1 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0431\u044d\u043a\u0442\u0440\u0435\u0439\u0441\u0430, \u043b\u0438\u0431\u043e 0 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u043b\u0438\u0431\u043e -1 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a log: \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 /logs. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false"},{"location":"basics/grav-configuration/#log","title":"\u041b\u043e\u0433","text":"
log:\n  handler: file\n  syslog:\n    facility: local6\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Log \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0434\u043b\u044f Grav.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 handler: \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f: file | syslog syslog: ... facility: \u0412\u044b\u0432\u043e\u0434 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0436\u0443\u0440\u043d\u0430\u043b\u0430"},{"location":"basics/grav-configuration/#otladchik","title":"\u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a","text":"
debugger:\n  enabled: false\n  provider: clockwork\n  censored: false\n  shutdown:\n    close_connection: true\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Debugger \u043c\u043e\u0436\u043d\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a Grav. \u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 enabled: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false provider: \u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 debugbar \u0438\u043b\u0438 clockwork (Grav 1.7+) censored: \u0426\u0435\u043d\u0437\u0443\u0440\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b POST, \u0444\u0430\u0439\u043b\u044b cookie, \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432/\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445 \u0436\u0443\u0440\u043d\u0430\u043b\u0430). \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false (Grav 1.7+) shutdown: ... close_connection: \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c onShutdown(). false \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438"},{"location":"basics/grav-configuration/#izobrazheniia","title":"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","text":"
images:\n  default_image_quality: 85\n  cache_all: false\n  cache_perms: '0755'\n  debug: false\n  auto_fix_orientation: false\n  seofriendly: false\n  cls:\n    auto_sizes: false\n    aspect_ratio: false\n    retina_scale: 1\n  defaults:\n    loading: auto\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Images \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 default_image_quality: \u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 85 = 85% cache_all: \u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false cache_perms: \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445! \u041f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u043f\u0430\u043f\u043a\u0438 \u043a\u044d\u0448\u0430. \u041e\u0431\u044b\u0447\u043d\u043e '0755' \u0438\u043b\u0438 '0775' debug: \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 retina. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false auto_fix_orientation: \u041f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0441 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c seofriendly: SEO-\u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 cls: \u041a\u0443\u043c\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u0434\u0432\u0438\u0433 \u043c\u0430\u043a\u0435\u0442\u0430. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 ... auto_sizes: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u0442\u044b/\u0448\u0438\u0440\u0438\u043d\u044b \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e ... aspect_ratio: \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0438\u043b\u044f \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u0440\u043e\u043d ... retina_scale: \u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0430\u0432\u0442\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 HiDPI defaults: (Grav 1.7+) ... loading: \u041f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443: auto, lazy \u0438\u043b\u0438 eager (Grav 1.7+)"},{"location":"basics/grav-configuration/#media","title":"\u041c\u0435\u0434\u0438\u0430","text":"
media:\n  enable_media_timestamp: false\n  unsupported_inline_types: []\n  allowed_fallback_types: []\n  auto_metadata_exif: false\n

\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Media \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u043e\u0432. \u042d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u043a, \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 enable_media_timestamp: \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u043a \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 unsupported_inline_types: \u041c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445. \u042d\u0442\u0438 \u0442\u0438\u043f\u044b \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043a\u043e\u0431\u043a\u0438 [] allowed_fallback_types: \u041c\u0430\u0441\u0441\u0438\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043f\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u0438 \u0442\u0438\u043f\u044b \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043a\u043e\u0431\u043a\u0438 [] auto_metadata_exif: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 Exif, \u0433\u0434\u0435 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e"},{"location":"basics/grav-configuration/#sessiia","title":"\u0421\u0435\u0441\u0441\u0438\u044f","text":"
session:\n  enabled: true\n  initialize: true\n  timeout: 1800\n  name: grav-site\n  uniqueness: path\n  secure: false\n  httponly: true\n  samesite: Lax\n  split: true\n  domain:\n  path:\n

\u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0435\u0430\u043d\u0441\u0430 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 enabled: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u0435\u0441\u0441\u0438\u0439. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false initialize: \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0430\u043d\u0441 \u0438\u0437 Grav (\u0435\u0441\u043b\u0438 false, \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0430\u043d\u0441) timeout: \u0422\u0430\u0439\u043c-\u0430\u0443\u0442 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 1800 name: \u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 cookie \u0441\u0435\u0430\u043d\u0441\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043a\u0432\u0435\u043d\u043d\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0442\u0438\u0440\u0435 \u0438\u043b\u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f. \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u0435\u0430\u043d\u0441\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: grav-site uniqueness: \u0414\u043e\u043b\u0436\u043d\u044b \u043b\u0438 \u0441\u0435\u0441\u0441\u0438\u0438 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 path \u0438\u043b\u0438 \u0436\u0435 \u043d\u0430 security.salt secure: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0441\u0435\u0430\u043d\u0441. \u0415\u0441\u043b\u0438 true, \u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 cookie \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443. \u0412\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0430\u0439\u0442\u0430\u0445, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 HTTPS. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false httponly: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0430\u043d\u0441 \u0442\u043e\u043b\u044c\u043a\u043e HTTP. \u0415\u0441\u043b\u0438 true, \u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b cookie \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 HTTP, \u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f JavaScript \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false samesite: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e SameSite. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: Lax, Strict \u0438 None. \u0421\u043c. \u0437\u0434\u0435\u0441\u044c domain: \u0414\u043e\u043c\u0435\u043d \u0441\u0435\u0430\u043d\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0442\u0432\u0435\u0442\u0430\u0445. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0434\u043e\u043c\u0435\u043d \u0441\u0430\u0439\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0434\u043e\u043a\u0435\u0440\u0430. path: \u041f\u0443\u0442\u044c \u0441\u0435\u0430\u043d\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0442\u0432\u0435\u0442\u0430\u0445. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 \u0441\u0430\u0439\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0434\u043e\u043a\u0435\u0440\u0430."},{"location":"basics/grav-configuration/#gpm","title":"GPM","text":"
gpm:\n  releases: stable\n  proxy_url:\n  method: 'auto'\n  verify_peer: true\n  official_gpm_only: true\n

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 GPM \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044e\u0442 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Grav. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c GPM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 GPM \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 releases: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 stable \u0438\u043b\u0438 testing, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u043f\u0443\u0441\u043a\u043e\u0432 \u0438\u043b\u0438 \u0436\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 proxy_url: \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u043b\u044f GPM. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 127.0.0.1:3128 method: \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: 'curl', 'fopen' \u0438\u043b\u0438 'auto'. 'auto' \u0431\u0443\u0434\u0435\u0442 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c fopen, \u0438 \u043b\u0438\u0448\u044c \u0437\u0430\u0442\u0435\u043c cURL verify_peer: \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 (\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c Windows) GPM \u043d\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d. \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c official_gpm_only: \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e GPM \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440 GPM \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u044d\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438"},{"location":"basics/grav-configuration/#uchetnye-zapisi","title":"\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438","text":"
accounts:\n  type: regular\n  storage: file\n

\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 flex-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u042d\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 flex-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 type: \u0422\u0438\u043f \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438: regular \u0438\u043b\u0438 flex storage: \u0422\u0438\u043f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f Flex: file \u0438\u043b\u0438 folder"},{"location":"basics/grav-configuration/#flex","title":"Flex","text":"
flex:\n  cache:\n    index:\n      enabled: true\n      lifetime: 60\n    object:\n      enabled: true\n      lifetime: 600\n    render:\n      enabled: true\n      lifetime: 600\n

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a\u044d\u0448\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u043c\u0438 \u0432 Grav 1.7. \u042d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0438\u043f\u043e\u0432 Flex, \u043d\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 Flex-\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 cache: (Grav 1.7+) ... index: (Grav 1.7+) ... ... enabled: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 Flex. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u043a \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 (Grav 1.7+) ... ... lifetime: \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 (0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e) (Grav 1.7+) ... object: (Grav 1.7+) ... ... enabled: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (Grav 1.7+) ... ... lifetime: \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 (0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e) (Grav 1.7+) ... render: (Grav 1.7+) ... ... enabled: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 Flex. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 (Grav 1.7+) ... ... lifetime: \u0412\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e HTML \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 (0 = \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e) (Grav 1.7+)"},{"location":"basics/grav-configuration/#strogii-rezhim","title":"\u0421\u0442\u0440\u043e\u0433\u0438\u0439 \u0440\u0435\u0436\u0438\u043c","text":"
strict_mode:\n  yaml_compat: true\n  twig_compat: true\n  blueprint_compat: false\n

\u0421\u0442\u0440\u043e\u0433\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0441\u0442\u0443\u044e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e \u0432 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Grav, \u041f\u0435\u0440\u0435\u0439\u0434\u044f \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 YAML \u0438 Twig. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438.

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 yaml_compat: \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c YAML twig_compat: \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0443\u044e \u043e\u043f\u0446\u0438\u044e \u0430\u0432\u0442\u043e\u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Twig blueprint_compat: \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439 \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u044e

\u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0435\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u044b\u0435 \u0432\u0430\u043c \u043e\u043f\u0446\u0438\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0438\u043c\u0435\u043d \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c.

"},{"location":"basics/grav-configuration/#nastroika-saita","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0430\u0439\u0442\u0430","text":"

\u041d\u0430\u0440\u044f\u0434\u0443 \u0441 \u0444\u0430\u0439\u043b\u043e\u043c system.yaml, Grav \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e site.yaml, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0438\u043c\u044f \u0430\u0432\u0442\u043e\u0440\u0430, \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0430\u0432\u0442\u043e\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0445 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 system.yaml, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 user/config/site.yaml. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.

\u0424\u0430\u0439\u043b system/config/site.yaml \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 Grav, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

title: Grav                                 # \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u0430\ndefault_lang: en                            # \u042f\u0437\u044b\u043a \u0441\u0430\u0439\u0442\u0430 (\u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c)\n\nauthor:\n  name: John Appleseed                      # \u0418\u043c\u044f \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n  email: 'john@example.com'                 # \u0418\u043c\u0435\u0439\u043b \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n\ntaxonomies: [category,tag]                  # \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0438\u043f\u043e\u0432 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438\n\nmetadata:\n  description: 'My Grav Site'               # \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u0430\n\nsummary:\n  enabled: true                             # \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0438\u0437\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\n  format: short                             # long = \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0442\u0438\u0437\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d; short = \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\n  size: 300                                 # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0438\u0437\u0435\u0440\u0430 (\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445)\n  delimiter: ===                            # \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0442\u0438\u0437\u0435\u0440\u0430\n\nredirects:\n#  '/redirect-test': '/'                    # Redirect test goes to home page\n#  '/old/(.*)': '/new/$1'                   # Would redirect /old/my-page to /new/my-page\n\nroutes:\n#  '/something/else': '/blog/sample-3'      # \u0410\u043b\u0438\u0430\u0441 \u0434\u043b\u044f /blog/sample-3\n#  '/new/(.*)': '/blog/$1'                  # \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430 \u043b\u044e\u0431\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0438\u0434\u0430 /new/my-page \u043d\u0430 /blog/my-page\n\nblog:\n  route: '/blog'                            # \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 site.blog.route)\n\n#menu:                                      # \u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u0435\u043d\u044e\n#    - text: Source\n#      icon: github\n#      url: https://github.com/getgrav/grav\n#    - icon: twitter\n#      url: http://twitter.com/getgrav\n

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0444\u0430\u0439\u043b\u0430:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 title: \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0438\u043c\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 author: ... name: \u0418\u043c\u044f \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0430\u0439\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e ... email: \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 taxonomies: \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0442\u0438\u043f\u0430\u043c \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c \u0438\u043b\u0438 \u0442\u0435\u0433\u0430\u043c. \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 metadata: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0432\u0430\u0448\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0441\u043c. \u0433\u043b\u0430\u0432\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 summary: ... size: \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u0432\u043e\u0434\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e routes: \u042d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430 URL \u0432 Grav. \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 /something/else \u0432\u044b \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0431\u0443\u0434\u0435\u0442\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0430 /blog/sample-3. \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0417\u0430\u043c\u0435\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 ((.*) - $1) \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0430\u043b\u0438\u0430\u0441\u043e\u0432. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u0445 \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (custom options) \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f blog: \u043c\u0430\u0440\u0448\u0440\u0443\u0442: '/blog' \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Twig \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 site.blog.route

\u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043b\u044e\u0434\u0435\u0439 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f. \u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0437\u0434\u0435\u0441\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435.

"},{"location":"basics/grav-configuration/#bezopasnost","title":"\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c","text":"

\u0414\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b system/config/security.yaml, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043d\u043e\u0432\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041e\u0442\u0447\u0451\u0442\u044b.

\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

xss_whitelist: [admin.super]\nxss_enabled:\n    on_events: true\n    invalid_protocols: true\n    moz_binding: true\n    html_inline_styles: true\n    dangerous_tags: true\nxss_invalid_protocols:\n    - javascript\n    - livescript\n    - vbscript\n    - mocha\n    - feed\n    - data\nxss_dangerous_tags:\n    - applet\n    - meta\n    - xml\n    - blink\n    - link\n    - style\n    - script\n    - embed\n    - object\n    - iframe\n    - frame\n    - frameset\n    - ilayer\n    - layer\n    - bgsound\n    - title\n    - base\nuploads_dangerous_extensions:\n    - php\n    - html\n    - htm\n    - js\n    - exe\nsanitize_svg: true\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043d\u0435\u0441\u0442\u0438 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 user/config/security.yaml \u0438 \u0432\u043d\u0435\u0441\u0442\u0438 \u0442\u0443\u0434\u0430 \u043f\u0440\u0430\u0432\u043a\u0438.

"},{"location":"basics/grav-configuration/#drugie-parametry-konfiguratsii-i-faily","title":"\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0444\u0430\u0439\u043b\u044b","text":"

\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0430\u043a \u043c\u0430\u043b\u043e \u0438\u043b\u0438 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u0430\u043a \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e. \u042d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0441\u0430\u0439\u0442\u0443, \u0442\u0430\u043a \u0438 \u043a \u043b\u044e\u0431\u044b\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 user/config/system.yaml \u0438\u043b\u0438 user/config/site.yaml, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 .yaml \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 user/config, \u0438 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0445\u0432\u0430\u0447\u0435\u043d Grav.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u043c\u0435\u0435\u0442 \u0438\u043c\u044f user/config/data.yaml \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f yaml \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f count:

count: 39\n

\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0432\u0430\u0448\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430:

{{ config.data.count }}\n

\u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0447\u0435\u0440\u0435\u0437 PHP \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434:

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

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0447\u0435\u0440\u0442\u0435\u0436, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0420\u0435\u0446\u0435\u043f\u0442\u044b Grav Admin.

"},{"location":"basics/grav-configuration/#prostranstvo-imen-peremennykh-konfiguratsii","title":"\u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438","text":"

\u041f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b YAML, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0438\u0437 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043f\u0443\u0442\u044c + \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 + \u0438\u043c\u044f \u043e\u043f\u0446\u0438\u0438.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u0442\u0430\u043a\u0430\u044f \u043e\u043f\u0446\u0438\u044f, \u043a\u0430\u043a author: Frank Smith \u0432 \u0444\u0430\u0439\u043b\u0435 plugins/myplugin.yaml, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0447\u0435\u0440\u0435\u0437: plugins.myplugin.author. \u041e\u0434\u043d\u0430\u043a\u043e \u0443 \u0432\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0444\u0430\u0439\u043b plugins.yaml, \u0438 \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0435\u0441\u0442\u044c \u0438\u043c\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c myplugin: author: Frank Smith, \u0438 \u043e\u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d plugins.myplugin.author. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b:

\u0424\u0430\u0439\u043b \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 user/config/system.yaml \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b user/config/site.yaml \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 user/config/plugins/myplugin.yaml \u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 myplugin user/config/themes/mytheme.yaml \u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0442\u0435\u043c\u044b mytheme

\u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u0438\u043c\u0435\u043d \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u0438\u043b\u0438 \u0437\u0430\u043c\u0430\u0441\u043a\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e

"},{"location":"basics/grav-configuration/#konfiguratsiia-plaginov","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 YAML. \u041c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 user/config/plugins/, \u0430 \u043d\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0444\u0430\u0439\u043b\u0435, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0435\u0442 \u0432\u0430\u0448\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043e\u0434\u043d\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0441 \u0438\u043c\u0435\u043d\u0435\u043c user/plugins/myplugin, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c user/plugins/myplugin/myplugin.yaml, \u0442\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 user/config/plugins/myplugin.yaml \u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0442\u0430\u043c.

\u0424\u0430\u0439\u043b YAML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041b\u044e\u0431\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u043c, \u0430 \u043d\u0435 \u0432 \u043a\u043e\u043f\u0438\u0438 \u043f\u0430\u043f\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043d\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b Grav.

"},{"location":"basics/grav-configuration/#konfiguratsiia-tem","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0442\u0435\u043c","text":"

\u0414\u043b\u044f \u0442\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u0435 \u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. \u0422\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0435\u043c\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c user/themes/mytheme, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c user/themes/mytheme/mytheme.yaml, \u0442\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 user/config/themes/mytheme.yaml \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0430\u043c.

"},{"location":"basics/installation/","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430","text":""},{"location":"basics/installation/#ustanovka","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430","text":"

\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Grav \u2014 \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav. \u041f\u0435\u0440\u0432\u044b\u0439 \u0438 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u0441\u043a\u0430\u0447\u0430\u0442\u044c zip-\u0430\u0440\u0445\u0438\u0432 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e. \u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 Composer. \u0422\u0440\u0435\u0442\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 GitHub, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.

"},{"location":"basics/installation/#proverka-versii-php","title":"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 PHP","text":"

Grav \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u0440\u043e\u0441\u0442 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d PHP \u0432\u0435\u0440\u0441\u0438\u0438 7.3.6+, \u0437\u0430\u0439\u0434\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u043d\u0430\u0431\u0440\u0430\u0432 php -v:

php -v\nPHP 7.2.15 (cli) (built: Feb  7 2019 20:10:03) ( NTS )\nCopyright (c) 1997-2018 The PHP Group\nZend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies\n    with Zend OPcache v7.2.15, Copyright (c) 1999-2018, by Zend Technologies\n
"},{"location":"basics/installation/#variant-1-ustanovka-iz-zip-paketa","title":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438\u0437 ZIP-\u043f\u0430\u043a\u0435\u0442\u0430","text":"

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Grav \u2014 \u044d\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c ZIP-\u0430\u0440\u0445\u0438\u0432 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e:

  1. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u0430\u043c\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0430\u043a\u0435\u0442\u0430 Grav \u0438\u043b\u0438 Grav + Admin.
  2. \u0420\u0430\u0441\u043f\u0430\u043a\u0443\u0439\u0442\u0435 ZIP-\u0444\u0430\u0439\u043b \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0441\u0430\u0439\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: ~/webroot/grav.

\u041c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u0440\u043a\u0430\u0441\u0430\u043c\u0438 \u2014 \u044d\u0442\u043e \u043f\u0430\u043a\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f Grav, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u043f\u0430\u043a\u0435\u0442 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0448\u0430\u0433\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0441 getgrav.org. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 https://getgrav.org/download/TYPE/PACKAGE/VERSION.

  • getgrav.org/download/core/grav/1.7.0 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 Grav v1.7.0
  • getgrav.org/download/core/grav/1.7.0-rc.10?testing=true \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 Grav v1.7.0-rc.10, \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437
  • getgrav.org/download/core/grav-admin/1.7.0 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 Grav v1.7.0 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u043a\u0438
  • getgrav.org/download/core/grav-admin/1.7.0-rc.10?testing=true \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 Grav v1.7.0-rc.10 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437
  • getgrav.org/download/core/grav-update/1.7.0 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f Grav
  • getgrav.org/download/plugins/flex-objects-json/0.1.0 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Flex Objects JSON v0.1.0
  • getgrav.org/download/themes/quark/2.0.3 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0442\u0435\u043c\u044b Quark v2.0.3

\u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 ZIP-\u0444\u0430\u0439\u043b, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0441\u0430\u0439\u0442\u0430, \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0412\u0421\u0401 \u0421\u041e\u0414\u0415\u0420\u0416\u0418\u041c\u041e\u0415 \u041f\u0410\u041f\u041a\u0418, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 (\u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a .htaccess) Grav \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.

"},{"location":"basics/installation/#variant-2-ustanovka-cherez-composer","title":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 Composer","text":"

\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Grav \u0447\u0435\u0440\u0435\u0437 Composer:

composer create-project getgrav/grav ~/webroot/grav\n

\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Grav \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 1.x-dev \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 1.7-dev):

composer create-project getgrav/grav ~/webroot/grav 1.x-dev\n
"},{"location":"basics/installation/#variant-3-ustanovka-s-github","title":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 3: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441 GitHub","text":"

\u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c Grav \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f GitHub, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439:

  1. \u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Grav \u0438\u0437 GitHub \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: ~/webroot/grav. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438\u043b\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0441\u0430\u0439\u0442\u0430:

    cd ~/webroot\ngit clone -b master https://github.com/getgrav/grav.git\n
  2. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 Composer:

    cd ~/webroot/grav\ncomposer install --no-dev -o\n
  3. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Grav bin/grav:

    cd ~/webroot/grav\nbin/grav install\n

    \u042d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0437 GitHub \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443.

"},{"location":"basics/installation/#dopolnitelnye-varianty","title":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b","text":""},{"location":"basics/installation/#ustanovka-s-pomoshchiu-docker","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Docker","text":"

Docker \u2014 \u044d\u0442\u043e \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043a\u0430\u043a \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0442\u0430\u043a \u0438 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0430\u0445. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0435\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438, \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u0439\u0442\u043e\u0432 Grav, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Docker.

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b Docker, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u044b Apache (\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437), Nginx \u0438 Caddy. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0438\u0449\u0435\u0442\u0435, \u0442\u043e \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0442\u043e\u043c\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u043f\u043e\u043a Grav user, backups \u0438 logs. (\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435).

"},{"location":"basics/installation/#variant-4-ustanovka-na-cloudron","title":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 4: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0430 Cloudron","text":"

Cloudron \u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0438\u0445 \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041d\u0430 \u0432\u0430\u0448\u0435\u043c Cloudron \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Grav \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0449\u0435\u043b\u0447\u043a\u0430\u043c\u0438 \u043c\u044b\u0448\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u0439\u0442\u043e\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435.

\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0430\u043a\u0435\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c.

"},{"location":"basics/installation/#ustanovka-cherez-linode-marketplace","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 Linode Marketplace","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b Linode, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Linode Marketplace. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 Grav \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 Linode. \u0417\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u0437\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043b\u0430\u0442\u0430.

"},{"location":"basics/installation/#veb-servery","title":"\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u044b","text":""},{"location":"basics/installation/#apache-iis-nginx","title":"Apache/IIS/Nginx","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Grav \u0441 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a Apache, IIS \u0438\u043b\u0438 Nginx, \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043a\u0430\u043a \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 Grav \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443. \u0412\u0441\u0451, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u2014 \u044d\u0442\u043e PHP 7.3.6+, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0430\u0448 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u0442\u043e\u043c\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u0445 Grav \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0433\u043b\u0430\u0432\u0435 \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430.

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0432\u0435\u0431-\u043a\u043e\u0440\u0435\u043d\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ~/public_html, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0435\u0433\u043e \u0432 \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443 \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0435\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 http://localhost. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u0442\u0435 \u0435\u0433\u043e \u0432 ~/public_html/grav, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 http//localhost/grav.

\u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d. Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 .htaccess \u0434\u043b\u044f Apache \u0438 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f nginx, caddy server, iis \u0438 lighttpd. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0438\u0445 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.

"},{"location":"basics/installation/#zapusk-grav-so-vstroennym-php-serverom","title":"\u0417\u0430\u043f\u0443\u0441\u043a Grav \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c PHP-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Grav, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430/\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 PHP, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c PHP.

\u0412\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043a\u043e\u0440\u043d\u044e \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 bin/grav server.

\u0425\u043e\u0442\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u044d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c PHP, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Symfony CLI, \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442 SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c https:// \u0438 PHP-FPM \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.

\u0412\u0432\u043e\u0434 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0430\u043c \u0432\u044b\u0432\u043e\u0434, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443:

\u279c bin/grav server\n\nGrav Web Server\n===============\n\nTailing Web Server log file (/Users/joeblow/.symfony/log/96e710135f52930318e745e901e4010d0907cec3.log)\nTailing PHP-FPM log file (/Users/joeblow/.symfony/log/96e710135f52930318e745e901e4010d0907cec3/53fb8ec204547646acb3461995e4da5a54cc7575.log)\nTailing PHP-FPM log file (/Users/joeblow/.symfony/log/96e710135f52930318e745e901e4010d0907cec3/53fb8ec204547646acb3461995e4da5a54cc7575.log)\n\n[OK] Web server listening\nThe Web server is using PHP FPM 8.0.8\nhttps://127.0.0.1:8000\n\n\n[Web Server ] Jul 30 14:54:53 |DEBUG  | PHP    Reloading PHP versions\n[Web Server ] Jul 30 14:54:54 |DEBUG  | PHP    Using PHP version 8.0.8 (from default version in $PATH)\n[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    fpm is running, pid 64992\n[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    ready to handle connections\n[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    fpm is running, pid 64992\n[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    ready to handle connections\n[Web Server ] Jul 30 14:54:54 |INFO   | PHP    listening path=\"/usr/local/Cellar/php/8.0.8_2/sbin/php-fpm\" php=\"8.0.8\" port=65140\n[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    fpm is running, pid 73709\n[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    ready to handle connections\n[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    fpm is running, pid 73709\n[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    ready to handle connections\n

\u0412\u0430\u0448 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0430\u043c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 [OK] Web server listening, \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0443.

https://127.0.0.1:8000\n

\u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u0430\u043a Apache \u0438\u043b\u0438 Nginx.

"},{"location":"basics/installation/#uspeshnaia-ustanovka","title":"\u0423\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430","text":"

\u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 Grav \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e.

\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 $ \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 Grav \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0441 \u0447\u0435\u0433\u043e-\u0442\u043e \u043d\u0430\u0447\u0430\u0442\u044c. \u0412\u0430\u0448 \u0441\u0430\u0439\u0442 \u0443\u0436\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e.

"},{"location":"basics/installation/#problemy-s-ustanovkoi-i-nastroikoi","title":"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439","text":"

\u0415\u0441\u043b\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0430\u0442\u0441\u044f \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b (\u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430), \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043e\u0448\u0438\u0431\u043a\u0438:

\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0440\u0435\u0434 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430.

"},{"location":"basics/installation/#obnovlenie-grav","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Grav","text":"

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0447\u0442\u0438\u0442\u0435 \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Grav \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.

"},{"location":"basics/requirements/","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f","text":""},{"location":"basics/requirements/#trebovaniia","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f","text":"

Grav \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Grav \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 99% \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432. \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0435:

  1. \u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 (Apache, Nginx, LiteSpeed, Lightly, IIS \u0438 \u0442. \u043f.)
  2. PHP 7.3.6 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435
  3. \u0412\u043e\u0442 \u0438 \u0432\u0441\u0451!

Grav \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.

\u0414\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u044d\u0448 PHP, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a APCu, Memcached \u0438\u043b\u0438 Redis. \u041d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"basics/requirements/#veb-servery","title":"\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u044b","text":"

Grav \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u0435\u043d, \u0447\u0442\u043e \u0432\u0430\u043c \u0434\u0430\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 PHP, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 PHP 7.3.6 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0436\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e.

\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav \u0438 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435, \u043d\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0436\u0438\u0432\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438\u043b\u0438 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435.

\u0425\u043e\u0442\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440, \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e, \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432:

"},{"location":"basics/requirements/#mac","title":"Mac","text":"
  • MacOS 12.0 Monterey \u0443\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c Apache \u0438 PHP \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 PHP.
  • MAMP/MAMP Pro \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 Apache, MySQL \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441 PHP. \u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e PHP \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0445\u043e\u0441\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 DNS.
  • AMPPS \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u043e\u0442 Softaculous, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Apache, PHP, Perl \u0438 Python. \u042d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e (\u0438 \u0434\u0430\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435) \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Grav.
"},{"location":"basics/requirements/#windows","title":"Windows","text":"
  • Open Server Panel \u044d\u0442\u043e \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0438\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u0438 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0439.
  • Laragon \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u0430\u044f, \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f, \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0438 \u043c\u043e\u0449\u043d\u0430\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f PHP, Node.js \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u0411\u044b\u0441\u0442\u0440\u0430\u044f, \u043b\u0435\u0433\u043a\u0430\u044f, \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f.
  • XAMPP \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Apache, PHP \u0438 MySQL \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435.
  • EasyPHP \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0432\u0435\u0431-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0449\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.
  • \u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 Linux \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Linux-\u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u043d\u0430 Windows
  • WinNMP - \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0433\u043e-\u0442\u043e \u0443\u0436 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e
"},{"location":"basics/requirements/#linux","title":"Linux","text":"
  • \u041c\u043d\u043e\u0433\u0438\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b Linux \u0443\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 Apache \u0438 PHP. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a, \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u0445\u043b\u043e\u043f\u043e\u0442. \u0411\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.
"},{"location":"basics/requirements/#trebovaniia-apache","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f Apache","text":"

\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 Apache \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e \u0432\u0441\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c, \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u043a\u0430\u0440\u0442\u0438\u043d\u044b \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 Apache:

  • mod_rewrite
  • mod_ssl (\u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Grav \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 SSL)

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c AllowOverride All, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 <Directory> \u0438/\u0438\u043b\u0438 <VirtualHost>, \u0447\u0442\u043e\u0431\u044b \u0444\u0430\u0439\u043b .htaccess \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0441\u0442\u0443\u043f\u0430\u043b\u0438 \u0432 \u0441\u0438\u043b\u0443.

"},{"location":"basics/requirements/#trebovaniia-iis","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f IIS","text":"

\u0425\u043e\u0442\u044f IIS \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.

\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b Grav \u043d\u0430 IIS-\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c URL Rewrite. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u0432\u0435\u0431-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Microsoft \u0438\u0437\u043d\u0443\u0442\u0440\u0438 IIS. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c URL Rewrite, \u043f\u0435\u0440\u0435\u0439\u0434\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 iis.net.

"},{"location":"basics/requirements/#trebovaniia-php","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f PHP","text":"

\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0438 \u0434\u0430\u0436\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u043a LAMP \u0438\u043c\u0435\u044e\u0442 PHP, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u043e \u0432\u0441\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Grav \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Windows \u0438 \u0434\u0430\u0436\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b Linux \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b \u0438\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 VPS (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Debian!) \u0438 \u0438\u043c\u0435\u044e\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 PHP. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 PHP:

  • curl (\u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 GPM)
  • ctype (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f symfony/yaml/Inline)
  • dom (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u043e\u0439 \u043b\u0435\u043d\u0442\u043e\u0439 grav/admin)
  • gd (\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0434\u043b\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438)
  • json (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Symfony/Composer/GPM)
  • mbstring (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u043d\u043e\u0433\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a)
  • openssl (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0441\u043e\u043a\u0435\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f GPM)
  • session (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f toolbox)
  • simplexml (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u043e\u0439 \u043b\u0435\u043d\u0442\u043e\u0439 grav/admin)
  • xml (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 XML)
  • zip (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f GPM)

\u0414\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 openssl \u0438 zip \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 php.ini \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:

;extension=openssl.so\n;extension=zip.so\n

\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0442\u043e\u0447\u0435\u043a \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.

"},{"location":"basics/requirements/#dopolnitelnye-moduli","title":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438","text":"
  • apcu \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u044d\u0448\u0430
  • opcache \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 PHP
  • yaml PECL Yaml \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 yaml \u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c
  • xdebug \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432 \u0441\u0440\u0435\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438
"},{"location":"basics/requirements/#prava-dostupa","title":"\u041f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430","text":"

\u0414\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b Grav \u0432\u0430\u0448 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432, \u043a\u044d\u0448\u0435\u0439 \u0438 \u0442. \u0434. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 CLI \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Grav GPM \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439 PHP \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 644 \u0438 755 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u0430\u043f\u043e\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0435, \u0447\u0442\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 PHP, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e Grav \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432.

\u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0432\u0430\u0448 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c.

  1. \u0412 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0434 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b.

  2. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u043d\u0430 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0433\u0440\u0443\u043f\u043f\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043c\u0435\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u043f\u0430\u043f\u043a\u0430\u043c, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0443.

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u0435, \u0441 \u043a\u0430\u043a\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Apache, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:

ps aux | grep -v root | grep apache | cut -d\\  -f1 | sort | uniq\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u0435, \u043a \u043a\u0430\u043a\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u044d\u0442\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 (\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f apache, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435)

groups USERNAME\n

(\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0432\u043c\u0435\u0441\u0442\u043e GROUP \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0433\u0440\u0443\u043f\u043f\u0443, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0430\u0448 apache, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 [www-data, apache, nobody \u0438 \u0442. \u0434.]):

chgrp -R GROUP .\nfind . -type f | xargs chmod 664\nfind ./bin -type f | xargs chmod 775\nfind . -type d | xargs chmod 775\nfind . -type d | xargs chmod +s\numask 0002\n

\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 find \u2026 | sudo xargs chmod \u2026.

"},{"location":"basics/requirements/#rekomenduemye-instrumenty","title":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b","text":""},{"location":"basics/requirements/#phpstorm","title":"PhpStorm","text":"

Grav \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b PhpStorm, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0451 \u043b\u0443\u0447\u0448\u0435\u0439 IDE \u0434\u043b\u044f Grav. \u042d\u0442\u043e \u043d\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u041f\u041e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e.

PhpStorm \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 PHP, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0438\u0448\u0443\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f Grav. \u041e\u043d \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043a\u043e\u0434\u0430 \u0434\u043b\u044f Grav (\u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c Grav \u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435, \u0432 includes), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u043c\u043e\u0449\u0438 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043a\u043e\u0434\u0430. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f twig, yaml, html, js, scss \u0438 tailwind.

"},{"location":"basics/requirements/#tekstovye-redaktory","title":"\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b","text":"

\u0425\u043e\u0442\u044f \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Notepad, Textedit, Vi \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0441 \u0432\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430. \u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b:

  1. Visual Studio Code - \u041f\u043e\u0434\u043e\u0431\u043d\u043e Atom, \u043e\u043d \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Electron, Node, \u0430 \u0442\u0430\u043a\u0436\u0435 HTML/CSS. \u041e\u043d \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0451\u0433\u043a\u0438\u0439 \u0438 \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 PHP \u0438 JavaScript. \u042d\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f Grav.
  2. Atom - MacOS/Windows/Linux - \u041d\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 Github. \u042d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u041e\u043d \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 Sublime, \u043d\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.
  3. Notepad++ - Windows - \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0434 Windows.
  4. Bluefish - MacOS/Windows/Linux - \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u0438 \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.
  5. Kate - MacOS/Windows/Linux - \u041b\u0451\u0433\u043a\u0438\u0439, \u043d\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 300 \u044f\u0437\u044b\u043a\u043e\u0432 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f Markdown).
"},{"location":"basics/requirements/#redaktory-markdown","title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b Markdown","text":"

\u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 Markdown-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440. \u041e\u043d\u0438 \u0447\u0430\u0441\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 HTML. \u0418\u0445 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0442\u043d\u0438, \u043d\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432:

  1. MacDown - MacOS - \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439, \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043b\u0451\u0433\u043a\u0438\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Markdown \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c.
  2. MarkdownPad - Windows - \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0438 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u0438. \u0414\u0430\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 YAML. \u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Windows.
  3. Mark Text - \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Markdown \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f Windows/Linux/MacOS.
"},{"location":"basics/requirements/#ftp-klienty","title":"FTP-\u043a\u043b\u0438\u0435\u043d\u0442\u044b","text":"

\u0425\u043e\u0442\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f Grav, \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u043d\u0430 \u0445\u043e\u0441\u0442\u0438\u043d\u0433. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e FTP-\u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435:

  1. Transmit - MacOS - \u0414\u0435-\u0444\u0430\u043a\u0442\u043e FTP/SFTP \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 MacOS. \u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0430\u043f\u043e\u043a \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c.
  2. FileZilla - MacOS/Windows/Linux - \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Windows \u0438 Linux. \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b\u0439.
  3. Cyberduck - MacOS/Windows - \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 MacOS \u0438 Windows. \u041d\u0435 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u043b\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u043a\u0430\u043a \u0434\u0440\u0443\u0433\u0438\u0435.
  4. ForkLift - MacOS - \u0421\u043e\u043b\u0438\u0434\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 Transmit \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435.
  5. WinSCP - Windows - \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 FTP/SFTP \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Windows.
"},{"location":"basics/requirements/#git","title":"Git","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 Git \u0432 \u0441\u0432\u043e\u0438\u0445 \u0441\u0440\u0435\u0434\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u0443\u044e \u0441\u043b\u0443\u0436\u0431\u0443 Git, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Github \u0438\u043b\u0438 GitLab. \u042d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435, \u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0441\u0442\u044b\u0439 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430 \u0432\u0430\u0441. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 Git'\u043e\u043c \u0438 \u0435\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.

\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Git \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u043f\u043e\u0437\u0436\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0420\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Git \u0433\u043b\u0430\u0432\u044b \u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0438 \u0445\u043e\u0441\u0442\u0438\u043d\u0433.

"},{"location":"basics/updates/","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Grav \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":""},{"location":"basics/updates/#obnovlenie-grav-i-plaginov","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Grav \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f Grav, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Grav Package Manager (GPM). \u041f\u043e\u043b\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e Grav GPM.

\u0423 \u043d\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c GPM, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 \u043d\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.

"},{"location":"basics/updates/#kakaia-u-menia-versiia","title":"\u041a\u0430\u043a\u0430\u044f \u0443 \u043c\u0435\u043d\u044f \u0432\u0435\u0440\u0441\u0438\u044f?","text":"

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Grav \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0430\u0439\u0442:

  • \u0410\u0434\u043c\u0438\u043d\u043a\u0430: \u0412\u0435\u0440\u0441\u0438\u044f Grav \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b\u0435 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u043a\u0446\u0438\u044f\u0445.
  • \u041a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430: \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 bin/gpm version grav. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0435\u0440\u0441\u0438\u0439 \u0442\u0435\u043c \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438\u0445 \u043f\u043e \u0438\u043c\u0435\u043d\u0430\u043c.
  • \u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430: \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0437\u043d\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u2014 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u0439\u043b CHANGELOG.md \u0432 \u043a\u043e\u0440\u043d\u0435 \u0441\u0430\u0439\u0442\u0430. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u0435\u0440\u043d\u043e \u0438 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0441 \u0442\u0435\u043c\u0430\u043c\u0438, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445 user/plugins \u0438 user/themes.
"},{"location":"basics/updates/#obnovlenie-s-grav-1-5-ili-bolee-rannei-versii","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 Grav 1.5 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438","text":"

\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Grav \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u0437-\u0437\u0430 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0445 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438.

\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c:

  • \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0430\u0439\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PHP 7.3 \u0438 CLI
  • \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u043e Grav 1.6.31
  • \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435\u0441\u044c \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438

\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Grav \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 <1.6 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435.

"},{"location":"basics/updates/#obnovlenie-do-sleduiushchei-versii","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438","text":"

\u0414\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0451 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.

  • \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0434\u043e Grav 1.7
  • \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0434\u043e Grav 1.6

\u041f\u0435\u0440\u0435\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Grav \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e.

"},{"location":"basics/updates/#obnovlenie-grav-cms","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Grav CMS","text":"

\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f Grav \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Grav Package Manager (GPM). \u0412\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:

bin/gpm selfupgrade -f\n

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0433\u043b\u0430\u0432\u0435 \u041a\u043e\u043c\u0430\u043d\u0434\u044b GPM > Self-upgrade.

"},{"location":"basics/updates/#obnovlenie-plaginov-i-tem","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c","text":"

\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430:

bin/gpm update\n

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0433\u043b\u0430\u0432\u0435 \u041a\u043e\u043c\u0430\u043d\u0434\u044b GPM > Update.

"},{"location":"basics/what-is-grav/","title":"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Grav?","text":""},{"location":"basics/what-is-grav/#chto-takoe-grav","title":"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Grav?","text":"

Grav \u2014 \u0431\u044b\u0441\u0442\u0440\u0430\u044f, \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u0433\u0438\u0431\u043a\u0430\u044f \u0432\u0435\u0431-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u0444\u0430\u0439\u043b\u0430\u0445. \u041e\u043d\u0430 \u041d\u0415 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u044d\u0442\u043e\u0439 CMS \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0432 \u0441 \u0435\u0451 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0425\u043e\u0442\u044f Grav \u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u043c CMS, \u0443 \u043d\u0435\u0451 \u0438\u043d\u0430\u044f \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u044f \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u0447\u0435\u043c \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c.

\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 Grav \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u0441\u043b\u043e\u0432\u0430 Gravity (\u0413\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u044f). \u041e\u0431\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d \u043d\u0430\u0448\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u0444\u0438\u043b\u044c\u043c\u0430 \u0441 \u0421\u0430\u043d\u0434\u0440\u043e\u0439 \u0411\u0443\u043b\u043b\u043e\u043a \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0440\u043e\u043b\u0438 \u2014 \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435! \u0427\u0442\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u043e, \u0433\u0440\u0430\u0432\u0438\u0442\u0430\u0446\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u043c, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u043c \u0441\u0438\u043b\u044b \u043f\u0440\u0438\u0442\u044f\u0436\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u00ab\u043a\u043e\u0434\u043e\u0432\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438\u00bb \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0438 \u043e\u043d\u043e \u043f\u0440\u0438\u0436\u0438\u043b\u043e\u0441\u044c.

\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 Grav \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u0441\u0435\u0431\u044f \u0438 \u043b\u0443\u0447\u0448\u0438\u0445-\u0432-\u0441\u0432\u043e\u0435\u043c-\u043a\u043b\u0430\u0441\u0441\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b Grav \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u0430 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u043b\u0430\u0441\u044c. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f:

  • Twig Templating: \u0434\u043b\u044f \u043c\u043e\u0449\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c
  • Markdown: \u0434\u043b\u044f \u043b\u0435\u0433\u043a\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430
  • YAML: \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
  • Parsedown: \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e Markdown \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Markdown Extra
  • Doctrine Cache: \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438
  • Pimple Dependency Injection Container: \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u0438 \u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f
  • Symfony Event Dispatcher: \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432
  • Symfony Console: \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438
  • Gregwar Image Library: \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439
"},{"location":"basics/what-is-grav/#mesto-grav-vo-vselennoi","title":"\u041c\u0435\u0441\u0442\u043e Grav \u0432\u043e \u0412\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439","text":"

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u043e\u0449\u043d\u044b\u0445 CMS-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438\u0437 \u043d\u0438\u0445 \u2014 Joomla, WordPress \u0438 Drupal. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c \u044d\u0442\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u043a\u0440\u0443\u0442\u0443\u044e \u043a\u0440\u0438\u0432\u0443\u044e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u043d\u0438\u043c\u0438. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u043d\u0430\u0439\u0442\u0438\u0441\u044c.

\u042d\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0438\u0440\u043e\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u043a\u0442\u0440\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u0438 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c. \u042d\u0442\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u043c\u044b \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435 \u0447\u0430\u0441\u0442\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c\u0438, \u0442\u0440\u0435\u0431\u0443\u044f \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u043d\u0430\u043d\u0438\u0439 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.

\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u0432\u044b \u0447\u0430\u0441\u0442\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043e\u0442 \u043c\u043d\u043e\u0433\u0438\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0430\u0448 \u0434\u0438\u0437\u0430\u0439\u043d \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u0438 \u0442\u0440\u0443\u0434\u043d\u044b\u043c \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.

Grav \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443. \u041e\u043d \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435 \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0430\u0448\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0441\u0430\u0439\u0442. \u041e\u0441\u043d\u043e\u0432\u044b Grav \u043f\u0440\u043e\u0441\u0442\u044b, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c, \u0432\u044b \u0438\u043c\u0435\u0435\u0442\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 Grav.

\u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u043e\u0449\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u0412\u0441\u0451 \u044d\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c Grav \u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.

\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u043f\u043d\u0435\u0442\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0433\u043b\u0443\u0431\u0436\u0435, \u0432\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e Grav \u043d\u0435 \u043f\u043e\u0434 \u0441\u0438\u043b\u0443.

"},{"location":"basics/what-is-grav/#logotipy-grav-i-informatsiia-dlia-pressy","title":"\u041b\u043e\u0433\u043e\u0442\u0438\u043f\u044b Grav \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0441\u0441\u044b","text":"

\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Grav, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u044b \u0438 \u043f\u0440\u0435\u0441\u0441-\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u043f\u0440\u0435\u0441\u0441\u044b.

"},{"location":"cli-console/command-line-intro/","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443","text":""},{"location":"cli-console/command-line-intro/#vvedenie-v-komandnuiu-stroku","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443","text":"

\u041d\u0438 \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u043d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e Grav \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u0425\u043e\u0442\u044f \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u0447, \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b (MacOS \u0438 Linux) \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 (Windows), \u043c\u043d\u043e\u0433\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. .

\u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0435\u0440\u043d\u043e \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0432\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, Grav, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043a\u043b\u0430\u0432\u0438\u0448.

\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u0432\u0441\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043b\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f\u043c. \u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439.

\u041d\u0435 \u0432\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u043e \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043a\u043e\u043c\u0430\u043d\u0434. \u041c\u0435\u0436\u0434\u0443 MacOS \u0438 \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u043c\u0438 Linux \u0435\u0441\u0442\u044c \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 Windows \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u0430\u043d\u0434, \u0447\u0435\u043c \u0434\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445.

"},{"location":"cli-console/command-line-intro/#macos","title":"MacOS","text":"

MacOS \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 Unix \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c POSIX. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u0430\u043d\u0434, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 Unix \u0438\u043b\u0438 Linux, \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 MacOS \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0438 \u043f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435.

\u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043f\u0440\u0438\u0432\u044b\u043a\u043d\u0443\u0442\u044c \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0432 MacOS:

  • Envato Tuts+ \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b \u0438 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0438 - 40 \u0443\u043c\u043d\u044b\u0445 \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u043f\u043e \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u044e \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u0445.
  • Envato Tuts+ \u0423\u043a\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 - \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439, \u043a\u0443\u0440\u0441 \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0438\u0434\u0435\u043e, \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.
"},{"location":"cli-console/command-line-intro/#linux","title":"Linux","text":"

\u041f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 Linux (\u0438 Unix) \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u043d\u0443 \u043e\u0431\u0449\u0443\u044e \u0447\u0435\u0440\u0442\u0443: \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 Bash (\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b). \u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a Gnome, Unity \u0438\u043b\u0438 KDE, \u0438\u043b\u0438 \u043d\u0435\u0442, \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Linux \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435 \u0438\u043b\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435, \u0432\u044b \u0437\u0430\u0448\u043b\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443.

\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u044d\u0442\u043e \u043c\u043e\u0449\u043d\u043e. \u0421 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0447\u0430\u0441\u0442\u043e \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u043d\u0430\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434. \u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u043c \u0432 Linux:

  • \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e TechSpot \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 Linux - \u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435.
  • \u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e MakeUseOf \u043f\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 Linux - \u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430.
  • \u0423\u0447\u0435\u0431\u043d\u0438\u043a\u0438 \u0420\u0430\u0439\u0430\u043d\u0430 \u0423\u0447\u0435\u0431\u043d\u043e\u0435 \u043f\u043e\u0441\u043e\u0431\u0438\u0435 \u043f\u043e Linux - \u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e Linux \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 Bash (\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b).
"},{"location":"cli-console/command-line-intro/#windows","title":"Windows","text":"

Windows \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u043f\u0430\u043a\u0435\u0442\u0430 \u043f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d. \u041c\u043d\u043e\u0433\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 Windows \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u0435\u0451 \u043a\u043e\u0440\u043d\u0438 DOS. \u041e\u0431\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a ls \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432, \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0431\u0440\u0430\u0442\u044c dir. \u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 Windows:

  • \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e MakeUseOf \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 Windows - \u0425\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f Windows.
  • DOSPrompt.info - \u0426\u0435\u043b\u044b\u0439 \u0441\u0430\u0439\u0442, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0439 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439.

\u0412\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b CLI Grav \u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u043d\u0430 PHP, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u0440\u0430\u0437\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 Windows. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u0438 \u043e\u043d, \u043e\u0442\u043a\u0440\u044b\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u043d\u0430\u0431\u0440\u0430\u0432 php -v \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0415\u0441\u043b\u0438 'php' \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0437\u043d\u0430\u0447\u0438\u0442, \u043e\u043d \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c PHP \u0432 \u0441\u0432\u043e\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Windows, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u0432\u043e\u0438 \u00ab\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b\u00bb, \u043b\u0438\u0431\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043f\u043e\u0438\u0441\u043a \u0432 \u043c\u0435\u043d\u044e \u00ab\u041f\u0443\u0441\u043a\u00bb, \u043b\u0438\u0431\u043e \u0432\u044b\u0431\u0440\u0430\u0432 \u041f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f -> \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b -> \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u00ab\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b\u00bb - \u043a\u043d\u043e\u043f\u043a\u0430.

\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435\u00bb \u043d\u0430\u0439\u0434\u0438\u0442\u0435 Path \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u00ab\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u00bb. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u00ab\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439\u00bb \u0432 \u0431\u043b\u043e\u043a\u043d\u043e\u0442, \u0430 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0442\u043e\u0447\u043a\u0443 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 - \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0417\u0430\u0442\u0435\u043c \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u043a \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 PHP (\u0441 \u043d\u0443\u043b\u044f \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u0443\u044e \u0441 \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438), \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0435\u0446 \u044d\u0442\u043e\u0433\u043e \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u0412\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435, \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f php.exe.

\u041a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u044c (\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0435\u043a\u0443\u0449\u0443\u044e), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430 php -v, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:PHP 7.0.7 (cli) .... \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Grav, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u043d\u0438\u043c php, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,php grav/gpm index.

"},{"location":"cli-console/command-line-intro/#spetsificheskie-komandy-grav","title":"\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Grav","text":"

\u041e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043a\u0440\u0443\u0442\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 Grav \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0432\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u043e\u0449\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435, \u043e\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c \u0434\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0443. \u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043c \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434.

\u0412\u0441\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 \u043b\u044e\u0431\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 bin/grav list \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 Grav (\u043a\u0440\u043e\u043c\u0435 GPM). bin/grav help <command> \u041f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435. bin/grav new-project <location> \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Grav \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043f\u043a\u0435. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav. bin/grav install \u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav. bin/grav cache \u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0447\u0438\u0449\u0430\u0435\u0442 \u043a\u044d\u0448 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442: --all, --assets-only, --images-only \u0438 --cache-only bin/grav backup \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 zip. bin/grav composer \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0430. bin/grav security \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 XSS \u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 Grav bin/gpm list \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 Grav GPM (Grav Package Manager). bin/gpm help <command> \u041f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435. bin/gpm index \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 Grav, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e \u0442\u0435\u043c\u0430\u043c \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c. bin/gpm info \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0430\u0432\u0442\u043e\u0440, \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438 \u0442. \u0434. bin/gpm install \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 \u0432\u0430\u0448 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 Grav \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. bin/gpm update \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0438\u0445. bin/gpm uninstall \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443 \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0438 \u043e\u0447\u0438\u0449\u0430\u0435\u0442 \u043a\u044d\u0448. bin/gpm self-upgrade \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c Grav \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. bin/gpm logviewer \u041b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0439\u0442\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u044b Grav \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0436\u0443\u0440\u043d\u0430\u043b\u0430, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044c bin/gpm scheduler \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e

\u042d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Grav CLI \u0438 Grav GPM.

\u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 Mac \u0438\u043b\u0438 Unix.

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 bin/gpm index \\| grep '\\| installed' \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0443 \u0432\u0430\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c."},{"location":"cli-console/command-line-intro/#simvolicheskie-ssylki","title":"\u0421\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438","text":"

\u0421\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 (\u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043a\u0430\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438) \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u0438 \u043b\u0435\u0433\u043a\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u0427\u0442\u043e \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442: \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e (\u043a\u043b\u043e\u043d) \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0438\u043b\u0438 \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0435\u0451 \u0442\u0443\u0434\u0430, \u043a\u0443\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043a\u043e\u043f\u0438\u0438, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0443\u043d\u043d\u0435\u043b\u044c \u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435, \u0447\u0442\u043e \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0435, \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445.

\u0415\u0449\u0435 \u043e\u0434\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043e\u043f\u0438\u0439 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u0444\u0430\u0439\u043b\u043e\u0432.

\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f Grav, \u0442\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 - \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0442\u0435\u043c\u044b \u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c. \u0412\u044b \u0432\u043d\u043e\u0441\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0438 \u043e\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b (\u044b).

\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442, \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438.

"},{"location":"cli-console/command-line-intro/#simvolicheskie-ssylki-v-macos-i-linux","title":"\u0421\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 MacOS \u0438 Linux","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0449\u0435\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0443 ln -s <\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438\u043b\u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435> <\u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u044e\u0434\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438>.

\u041a\u043e\u043c\u0430\u043d\u0434\u044b, \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0414\u043b\u044f MacOS \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 Unix \u0438 Linux \u043a\u043e\u043c\u0430\u043d\u0434\u0430 ln -s. \u0427\u0430\u0441\u0442\u044c ln \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443. \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c -s \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443.

"},{"location":"cli-console/command-line-intro/#simvolicheskie-ssylki-v-windows","title":"\u0421\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 Windows","text":"

\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 Windows - mklink <\u0442\u0438\u043f> <\u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u044e\u0434\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438> <\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438\u043b\u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435>. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 MacOS \u0438\u043b\u0438 Linux, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0442\u0438\u043f\u0430 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0435. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438 \u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u043e\u0432\u0430\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0444\u0430\u0439\u043b\u043e\u043c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0435\u0441\u044c. \u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430:

  • /j - \u044d\u0442\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442. \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433.
  • /h - \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430.
  • /d - \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u0438\u043b\u0438 \u044f\u0440\u043b\u044b\u043a. \u041c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0437\u0434\u0435\u0441\u044c \u0446\u0435\u043b\u0435\u0439.
"},{"location":"cli-console/command-line-intro/#primery-komand","title":"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434","text":"

\u041f\u043e \u0441\u0443\u0442\u0438, \u0432\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0435, \u0438 \u043a\u0443\u0434\u0430 \u0432\u044b \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434:

"},{"location":"cli-console/command-line-intro/#sviazyvanie-soderzhimogo-odnoi-papki-s-drugoi","title":"\u0421\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439","text":"MacOS \u0438 Linux Windows ln -s ~/folder1 ~/folder2 mklink /J C:\\folder2 C:\\folder1

\u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0435\u0440\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u043d\u043e\u0435 \u0432 folder1, \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0432 folder2. \u0415\u0441\u043b\u0438 folder2 \u0435\u0449\u0451 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.

"},{"location":"cli-console/command-line-intro/#sviazyvaite-tselye-papki-iz-odnogo-mesta-v-drugoe","title":"\u0421\u0432\u044f\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u0446\u0435\u043b\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435","text":"MacOS \u0438 Linux Windows ln -s ~/folder1 ~/folder2/ mklink /J C:\\folder2\\ C:\\folder1

\u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0432\u0435\u0441\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 folder1 \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u0446\u0435\u043b\u0435\u0432\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 folder2). \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 folder2 \u0434\u043e\u043b\u0436\u043d\u0430 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0441\u0443\u044e \u0447\u0435\u0440\u0442\u0443 \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u043a\u043e\u0441\u0443\u044e \u0447\u0435\u0440\u0442\u0443 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0438 folder2.

"},{"location":"cli-console/command-line-intro/#sviazyvanie-otdelnykh-failov-iz-odnogo-mesta-v-drugoe","title":"\u0421\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435","text":"MacOS \u0438 Linux Windows ln -s ~/folder1/file.jpg ~/folder2 mklink /H C:\\folder2\\ C:\\folder1\\file.jpg

\u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0445, \u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u043f\u043e\u0432\u0441\u044e\u0434\u0443 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0444\u0430\u0439\u043b - \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043f\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438.

"},{"location":"cli-console/grav-cli/","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u044b Grav","text":""},{"location":"cli-console/grav-cli/#komandy-grav","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u044b Grav","text":"

Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 (CLI), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 bin/grav. CLI \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u0430\u0434\u0430\u0447, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u043a\u044d\u0448\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.

\u0414\u043e\u0441\u0442\u0443\u043f \u043a CLI \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043d\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b. \u041d\u0430 mac \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u00bb, \u043d\u0430 windows \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00abcmd\u00bb, \u0430 \u043d\u0430 Linux \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0441\u0442\u0438\u043b\u0435 UNIX \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 Windows cmd. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 Git SCM \u0432 Windows \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 Git \u0438 Git BASH, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0434\u0435\u043b\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b UNIX. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u0442\u043e, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SSH \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0443\u0447\u0435\u0431\u043d\u0438\u043a \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e SSH.

\u0425\u043e\u0442\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e relying \u043d\u0430 CLI, \u044d\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cronjobs, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e.

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 Grav, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:

bin/grav list\n

\u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435:

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:\n  backup       \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Grav\n  cache        [clearcache|cache-clear] \u041e\u0447\u0438\u0449\u0430\u0435\u0442 \u043a\u044d\u0448\n  clean        \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0447\u0438\u0441\u0442\u043a\u0443\n  composer     \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 composer, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 Grav.\n  help         \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435\n  install      \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 Grav. \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438\n  list         \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b\n  logviewer    \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 Grav\n  new-project  [newproject] \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Grav \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438\n  sandbox      \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Grav \u0432 \u0432\u0430\u0448\u0435\u043c webroot, \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438\u0433\u0440\u044b \u0438\u043b\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u043e\u0432\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b\n  scheduler    \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a Grav. \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 cron\n  security     \u0421\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438\n

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0435\u0439 help:

bin/grav help install\n
"},{"location":"cli-console/grav-cli/#rezervnye-kopii","title":"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438","text":"

\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Grav \u0431\u044b\u043b\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0432 Grav 1.6 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 user/config/backups.aml. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, Grav \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 system/config/backups.yaml.

\u0415\u0441\u043b\u0438 Grav \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 CLI \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u0430\u043c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b CLI.

cd ~/workspace/portfolio\nbin/grav backup\n\nGrav Backup\n===========\n\nChoose a backup?\n  [0] Default Site Backup\n  [1] Pages Backup\n

\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u0440\u043e\u0444\u0438\u043b\u044f:

$ cd ~/workspace/portfolio\nbin/grav backup 1\n\nArchiving 36 files [===================================================] 100% < 1 sec Done...\n\n [OK] Backup Successfully Created: /users/joe/workspace/portfolio/backup/pages_backup--20190227120510.zip\n

\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e -> \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438.

"},{"location":"cli-console/grav-cli/#ochistka","title":"\u041e\u0447\u0438\u0441\u0442\u043a\u0430","text":"

\u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 CLI \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0438\u0437 Grav \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438. \u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0435\u0433\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Grav.

bin/grav clean\n
"},{"location":"cli-console/grav-cli/#ochistka-kesha","title":"\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043a\u044d\u0448\u0430","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448, \u0443\u0434\u0430\u043b\u0438\u0432 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 cache/.

\u042d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 CLI:

$ cd ~/webroot/my-grav-project\nbin/grav cache\n

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 ('cache,cache-clear,clearcache,clear').

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:

--purge           \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u043e, \u0443\u0434\u0430\u043b\u0438\u0442 \u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u044d\u0448\n--all             \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u043e, \u0443\u0434\u0430\u043b\u0438\u0442 \u0432\u0441\u0451, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, twig, \u043a\u044d\u0448\u0438 doctrine\n--assets-only     \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u043e, \u0443\u0434\u0430\u043b\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e assets/*\n--images-only     \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u043e, \u0443\u0434\u0430\u043b\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e images/*\n--cache-only      \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u043e, \u0443\u0434\u0430\u043b\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e cache/*\n--tmp-only        \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u043e, \u0443\u0434\u0430\u043b\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e tmp/*\n
"},{"location":"cli-console/grav-cli/#composer","title":"Composer","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 Grav \u0447\u0435\u0440\u0435\u0437 GitHub \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 composer, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e:

bin/grav composer\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0430, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a install:

bin/grav composer --install\n

\u0438\u043b\u0438

bin/grav composer --update\n

\u0412\u0441\u0435 \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Composer --no-dev, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e: bin/composer.phar

"},{"location":"cli-console/grav-cli/#install","title":"Install","text":"

\u0427\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f Grav (\u043f\u043b\u0430\u0433\u0438\u043d errors, \u043f\u043b\u0430\u0433\u0438\u043d errors, \u0442\u0435\u043c\u0430 Antimatter), \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438\u043b\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 grav, \u0433\u0434\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 CLI.

$ cd ~/webroot/my-grav-project\nbin/grav install\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:

  • ~/webroot/my-grav-project/user/plugins/error
  • ~/webroot/my-grav-project/user/plugins/problems
  • ~/webroot/my-grav-project/user/themes/antimatter
"},{"location":"cli-console/grav-cli/#prosmotr-zhurnala","title":"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0436\u0443\u0440\u043d\u0430\u043b\u0430","text":"

\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 Grav 1.6 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 CLI logviewer, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b\u044b Grav.

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 - \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0431\u0440\u0430\u0442\u044c:

cd ~/webroot/my-grav-project\nbin/grav logviewer\n

\u042d\u0442\u043e \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 20 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 logs/grav.log. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432:

-f, --file[=FILE]     \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e = grav.log)\n-l, --lines[=LINES]   \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e = 10)\n-v, --verbose         \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u0442\u0435\u043a\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\n

\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440

bin/grav logviewer --lines=4                                                                           [12:27:20]\n\nLog Viewer\n==========\n\nviewing last 4 entries in grav.log\n\n2019-02-27 12:00:30 [WARNING] Plugin 'foo-plugin' enabled but not found! Try clearing cache with `bin/grav cache`\n2019-02-27 12:04:57 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/default_site_backup--20190227120450.zip\n2019-02-27 12:05:10 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/pages_backup--20190227120510.zip\n2019-02-27 12:26:00 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/pages_backup--20190227122600.zip\n

\u0418 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0441 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0441\u0442\u0435\u043a\u0430:

bin/grav logviewer -v                                                                                                       [16:12:12]\n\nLog Viewer\n==========\n\nviewing last 20 entries in grav.log\n\n2019-03-14 05:52:44 [WARNING] Plugin 'simplesearch.bak' enabled but not found! Try clearing cache with `bin/grav clear-cache`\n2019-03-14 05:52:44 [CRITICAL] A function must be an instance of \\Twig_FunctionInterface or \\Twig_SimpleFunction.\n0 /Users/joe/my-grav-project/plugins/acme-twig-filters/acme-twig-filters.php(52): Twig\\Environment->addFunction(Object(Twig\\TwigFilter))\n1 /Users/joe/my-grav-project/vendor/symfony/event-dispatcher/EventDispatcher.php(212): Grav\\Plugin\\ACMETwigFiltersPlugin->onTwigInitialized(Object(RocketTheme\\Toolbox\\Event\\Event), 'onTwigInitializ...', Object(RocketTheme\\Toolbox\\Event\\EventDispatcher))\n2 /Users/joe/my-grav-project/vendor/symfony/event-dispatcher/EventDispatcher.php(44): Symfony\\Component\\EventDispatcher\\EventDispatcher->doDispatch(Array, 'onTwigInitializ...', Object(RocketTheme\\Toolbox\\Event\\Event))\n3 /Users/joe/my-grav-project/vendor/rockettheme/toolbox/Event/src/EventDispatcher.php(23): Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch('onTwigInitializ...', Object(RocketTheme\\Toolbox\\Event\\Event))\n4 /Users/joe/my-grav-project/system/src/Grav/Common/Grav.php(365): RocketTheme\\Toolbox\\Event\\EventDispatcher->dispatch('onTwigInitializ...', Object(RocketTheme\\Toolbox\\Event\\Event))\n5 /Users/joe/my-grav-project/system/src/Grav/Common/Twig/Twig.php(175): Grav\\Common\\Grav->fireEvent('onTwigInitializ...')\n6 /Users/joe/my-grav-project/system/src/Grav/Common/Processors/TwigProcessor.php(24): Grav\\Common\\Twig\\Twig->init()\n7 /Users/joe/my-grav-project/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php(45): Grav\\Common\\Processors\\TwigProcessor->process(Object(Nyholm\\Psr7\\ServerRequest), Object(Grav\\Framework\\RequestHandler\\RequestHandler))\n8 /Users/joe/my-grav-project/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php(57): Grav\\Framework\\RequestHandler\\RequestHandler->handle(Object(Nyholm\\Psr7\\ServerRequest))\n9 /Users/joe/my-grav-project/system/src/Grav/Common/Processors/AssetsProcessor.php(28): Grav\\Framework\\RequestHandler\\RequestHandler->handle(Object(Nyholm\\Psr7\\ServerRequest))\n\n2019-03-14 05:52:46 [WARNING] Plugin 'simplesearch.bak' enabled but not found! Try clearing cache with `bin/grav clear-cache`\n...\n
"},{"location":"cli-console/grav-cli/#novyi-proekt","title":"\u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442","text":"

\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 Grav, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441 \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Grav. \u0427\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442 \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434.

  1. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438\u043b\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 grav (\u043c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 ~/Projects/grav).
cd ~/Projects/grav\n
  1. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 GRAV CLI \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u0440\u0438\u0447\u0435\u043c \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u043f\u0443\u043d\u043a\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e webroot \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430). \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e \u0438 \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 ~/Webroot/portfolio.
bin/grav new-project ~/webroot/portfolio\n

\u042d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 Grav \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.

"},{"location":"cli-console/grav-cli/#sandbox-pesochnitsa","title":"Sandbox (\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430)","text":"

Grav \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c sandbox, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0438\u043c\u043b\u0438\u043d\u043a\u043e\u0432\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0437\u0430\u043f\u0443\u0441\u043a bin/grav sandbox-S DESTINATION \u2014 \u0433\u0434\u0435 \u00abDESTINATION\u00bb \u2014 \u044d\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u2014 \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043f\u043a\u0435.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:

bin/grav sandbox -s ../copy\n

\u0418\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 Grav-\u043f\u0430\u043f\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0440\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c copy, \u0433\u0434\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043f\u0438\u044f\u043c\u0438: /bin, /system, /vendor, /webserver-configs, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 Grav. \u0412\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 /user \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043f\u0438\u0435\u0439 \u043f\u043e\u0434 \u043a\u043e\u043f\u0438\u0440\u043a\u0443, \u0430 \u043d\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043d\u043e\u0432\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.

"},{"location":"cli-console/grav-cli/#planirovshchik","title":"\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a","text":"

\u041a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e -> \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b CLI.

\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b:

bin/grav scheduler\n

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0446\u0438\u0438 -v :

bin/grav scheduler -v\n\nRunning Scheduled Jobs\n======================\n\n[2019-02-27T12:34:07-07:00] Success: Grav\\Common\\Cache::purgeJob\n[2019-02-27T12:34:07-07:00] Success: Grav\\Common\\Cache::clearJob\n[2019-02-27T12:34:07-07:00] Success: ls -lah\n

\u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f:

-i, --install         \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\n-j, --jobs            \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0434\u043a\u0443 \u0437\u0430\u0434\u0430\u043d\u0438\u0439\n-d, --details         \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0439\n

\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 Advanced -> Scheduler \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445.

"},{"location":"cli-console/grav-cli/#bezopasnost","title":"\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c","text":"

\u0412 Grav 1.5 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043d\u043e\u0432\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438.

bin/grav security                                                                                       [12:34:12]\n\nGrav Security Check\n===================\n\nScanning 11 pages [===================================================] 100% < 1 sec\n\n[OK] Security Scan complete: No issues found...\n
"},{"location":"cli-console/grav-cli/#informatsiia-php-cgi-fcgi","title":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f PHP CGI-FCGI","text":"

\u0427\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 cgi-fcgi \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

$ php -v\nPHP 5.5.17 (cgi-fcgi) (built: Sep 19 2014 09:49:55)\nCopyright (c) 1997-2014 The PHP Group\nZend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies\n    with the ionCube PHP Loader v4.6.1, Copyright (c) 2002-2014, by ionCube Ltd.\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 (cgi-fcgi), \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0432\u0441\u0435\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 bin/grav \u043f\u0440\u0435\u0444\u0438\u043a\u0441 php-cli. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0432 \u0441\u0432\u043e\u0435\u0439 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0447\u0435\u0433\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435: alias php=\"php-cli\", \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442 \u0437\u0430\u043f\u0443\u0441\u043a CLI \u0432\u0435\u0440\u0441\u0438\u0438 PHP \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.

"},{"location":"cli-console/grav-cli-gpm/","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u044b GPM","text":""},{"location":"cli-console/grav-cli-gpm/#komandy-gpm","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u044b GPM","text":"

\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 0.9.3, Grav \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 GPM (Grav Package Manager), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c, \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0432\u0441\u0435 \u0442\u0435\u043c\u044b \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 Grav, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0441\u0430\u043c Grav. \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.

\u041f\u043e\u0434\u043e\u0431\u043d\u043e Grav CLI, GPM \u2014 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0432 MacOS. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0442\u0438\u043b\u044f UNIX \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 Windows cmd. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 Git SCM \u0432 Windows \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 Git \u0438 Git BASH, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0434\u0435\u043b\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b UNIX.

\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 GPM, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u043e\u043c\u0430\u043d\u0434:

bin/gpm list\n

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:

bin/gpm help install\n

\u0427\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0441\u0430\u043c\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0432 PHP \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 php_openssl. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430.

"},{"location":"cli-console/grav-cli-gpm/#informatsiia-o-php-cgi-fcgi","title":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e PHP CGI-FCGI","text":"

\u0427\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043b\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 cgi-fcgi \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

php -v\nPHP 5.5.17 (cgi-fcgi) (built: Sep 19 2014 09:49:55)\nCopyright (c) 1997-2014 The PHP Group\nZend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies\n    with the ionCube PHP Loader v4.6.1, Copyright (c) 2002-2014, by ionCube Ltd.\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 (cgi-fcgi), \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0432\u0441\u0435\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 bin/gpm \u043f\u0440\u0435\u0444\u0438\u043a\u0441 php-cli. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0432 \u0441\u0432\u043e\u0435\u0439 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0447\u0435\u0433\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435: alias php=\"php-cli\", \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442 \u0437\u0430\u043f\u0443\u0441\u043a CLI \u0432\u0435\u0440\u0441\u0438\u0438 PHP \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.

"},{"location":"cli-console/grav-cli-gpm/#kak-eto-rabotaet","title":"\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?","text":"

GPM \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0441 GetGrav.org. \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u0445, \u0438 GPM \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043b\u0438 \u0443\u0436\u0435 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043d\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u043b\u0438 \u043e\u043d\u0438 \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438.

\u0421\u0430\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Grav, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043d\u0430 24 \u0447\u0430\u0441\u0430. \u041b\u044e\u0431\u044b\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u044d\u0448\u0430 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c GetGrav.org, \u0430 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0442.

\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u0430\u043d\u0434 (\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0438\u0436\u0435) \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c --force (-f), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0436\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 24-\u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0446\u0438\u043a\u043b, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043a\u044d\u0448 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0438\u0449\u0435\u043d.

"},{"location":"cli-console/grav-cli-gpm/#komandy","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u044b","text":"

\u041d\u0438\u0436\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u043b\u0438 \u0432\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f GPM. \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0432\u0430\u0448\u0435 \u043b\u044e\u0431\u0438\u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435-\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Grav \u0432\u0432\u0435\u0434\u0438\u0442\u0435 bin/gpm <command>.

"},{"location":"cli-console/grav-cli-gpm/#index","title":"index","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 index \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 Grav, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e themes \u0438 plugins.

\u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u044f, \u044f\u0440\u043b\u044b\u043a, \u0432\u0435\u0440\u0441\u0438\u044f \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043b\u0438 \u043e\u043d\u043e \u0443\u0436\u0435 \u0438\u043b\u0438 \u043d\u0435\u0442.

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Antimatter (v1.1.1), \u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 v1.1.3, \u043e\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e --installed-only, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c.

"},{"location":"cli-console/grav-cli-gpm/#info","title":"info","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 info \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435, \u0442\u0430\u043a\u0443\u044e \u200b\u200b\u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0430\u0432\u0442\u043e\u0440, \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438 \u0442. \u0434.

\u0412\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430/\u0442\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0438.

"},{"location":"cli-console/grav-cli-gpm/#install","title":"install","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 install \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0437\u0430\u044f\u0432\u043b\u044f\u0435\u0442. \u041e\u043d \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 \u0432\u0430\u0448 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 Grav \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u0443\u0436\u0435 \u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d \u043b\u0438 \u043e\u043d \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438, \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u0430\u043c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0432 \u044f\u0440\u043b\u044b\u043a\u0438 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 --all-yes (-y), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b, \u0430 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438, \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u044b.

"},{"location":"cli-console/grav-cli-gpm/#update","title":"update","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 update \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043einstall.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438.

"},{"location":"cli-console/grav-cli-gpm/#uninstall","title":"uninstall","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 uninstall \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443 \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0438 \u043e\u0447\u0438\u0449\u0430\u0435\u0442 \u043a\u044d\u0448. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Grav - \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438.

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442, \u0441\u0432\u044f\u0437\u0430\u043d \u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438, \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u0430\u043c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0432 \u044f\u0440\u043b\u044b\u043a\u0438 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 --all-yes (-y), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u0415\u0441\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d.

"},{"location":"cli-console/grav-cli-gpm/#self-upgrade","title":"self-upgrade","text":"

self-upgrade (\u0441\u0430\u043c\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c Grav \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0415\u0441\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u043e\u0431 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u043e \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438 \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u043f\u0443\u0441\u043a \u0431\u044b\u043b \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d.

\u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f (\u0441\u043c. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 CLI).

\u0421\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Grav, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043f\u0430\u043f\u043a\u0430 system/, \u043f\u0430\u043f\u043a\u0430 vendor/, index.php \u0438 \u0434\u0440\u0443\u0433\u0438\u0435. \u0412\u0430\u0448\u0438 \u043f\u0430\u043f\u043a\u0438 user \u0438 images \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b.

"},{"location":"cli-console/grav-cli-gpm/#vazhnaia-informatsiia-dlia-razrabotchikov","title":"\u0412\u0430\u0436\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432","text":""},{"location":"cli-console/grav-cli-gpm/#chertezhi","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438","text":"

\u0421 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c GPM \u0443 \u043d\u0430\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439. \u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b theme \u0438\u043b\u0438 plugin, \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441\u0435\u043a\u0446\u0438\u044f blueprints \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.

\u0427\u0435\u0440\u0442\u0451\u0436 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0446\u0435\u043b\u044f\u043c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0433\u043b\u0430\u0432\u0435 \u0427\u0435\u0440\u0442\u0435\u0436\u0438 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b.

"},{"location":"cli-console/grav-cli-gpm/#relizy","title":"\u0420\u0435\u043b\u0438\u0437\u044b","text":"

\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Grav \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0438. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u043d\u0430\u0448\u0438\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u0430.

\u0421\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439, \u043e\u0442\u043c\u0435\u0442\u0438\u043b\u0438 \u0438 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Grav \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u0430 \u0432\u0430\u0441, \u0438 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0448 \u0440\u0435\u043b\u0438\u0437 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d, \u043e\u043d \u0441\u0442\u0430\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u0441\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 Grav \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 GPM.

"},{"location":"cli-console/grav-cli-gpm/#dobavte-svoi-resurs-v-repozitorii","title":"\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439","text":"

advanced/grav-development#themeplugin-release-process

\u0421\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u043c\u044b/\u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d/\u0442\u0435\u043c\u0443 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Grav, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 Grav Issue \u043d\u0430 GitHub. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443. \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432\u043c\u0435\u0441\u0442\u043e user/repository.

\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d/\u0442\u0435\u043c\u0430, \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 \u044d\u0442\u043e\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435.

\u0422\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 Grav \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442 \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d/\u0442\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c Grav. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0438 \u0442. \u0434. \u0434\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430/\u0442\u0435\u043c\u044b.

"},{"location":"cli-console/grav-cli-plugin/","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":""},{"location":"cli-console/grav-cli-plugin/#komandy-plaginov","title":"\u041a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 CLI Grav bin/plugin \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.

\u041a\u0430\u043a \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Grav CLI, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b.

\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b bin/plugin \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e CLI.

\u041f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c \u0432 bin/plugin, \u0432\u0441\u0435\u0433\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f (\u0442. \u0435. error, login \u0438 \u0442. \u0434.). \u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 - \u044d\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d.

\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043d\u0438\u0445, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 bin/plugin [slug] list.

"},{"location":"cli-console/grav-cli-plugin/#zarezervirovannye-komandy-i-parametry","title":"\u0417\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","text":"

\u0415\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 commands \u0438 options, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.

\u041a\u043e\u043c\u0430\u043d\u0434\u044b help \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 list \u0421\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434 \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b -h, --help \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 -q, --quiet \u041d\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 -v, --version \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f --ansi \u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 ANSI --no-ansi \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 ANSI -n, --no-interaction \u041d\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 -v|vv|vvv, --verbose \u0423\u0432\u0435\u043b\u0438\u0447\u044c\u0442\u0435 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439: 1 \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430, 2 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u0438 3 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438"},{"location":"cli-console/grav-cli-plugin/#kak-ispolzovat-interfeis-komandnoi-stroki-dlia-plaginov","title":"\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u044b list \u0438 help \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0435\u0449\u0451 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e list \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043d\u0438\u0445 \u0434\u0435\u043b\u0430\u0435\u0442.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c login, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 bin/plugin login list.

\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044f\u0440\u043b\u044b\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 list. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e bin/plugin [slug] list \u0438 bin/plugin [slug] \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0430\u043c\u0438.

\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, - \u044d\u0442\u043e add-user, new-user \u0438 newuser.

\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e. \u042d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e \u0432\u044b\u0431\u043e\u0440\u0443 3 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b. add-user \u0438 newuser \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430\u043c\u0438 \u0434\u043b\u044f new-user, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043d\u0435 \u0437\u043d\u0430\u044f \u0438 \u043d\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044f \u0435\u0451.

\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 new-user, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0417\u0434\u0435\u0441\u044c \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 help. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c bin/plugin login help new-user.

\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 new-user. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438, \u043c\u044b \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044c (\u043f\u043e\u0437\u0436\u0435 \u043d\u0430\u0441 \u0441\u043f\u0440\u043e\u0441\u044f\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c).

bin/plugin login newuser -u joeuser -e joeuser@grav.org -P b -N \"Joe User\" -t \"Site Administrator\"\nCreating new user\n\nEnter a password: *********\nRepeat the password: *********\n\nSuccess! User joeuser created.\n
"},{"location":"cli-console/grav-cli-plugin/#razrabotchikam-integratsiia-interfeisa-komandnoi-stroki-v-plagin","title":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c: \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d","text":"

\u041a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u200b\u200b\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u043b\u0430\u0433\u0438\u043d \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e.

\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 cli/ \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u042d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 bin/plugin \u0438 \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434.

CLI Grav \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c Symfony Console Component, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u043f\u0440\u0430\u0432\u043a\u0438, \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c.

  1. \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435. \u041e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f ** Command.php **.
    • Hello.php: \u041d\u0415\u041f\u0420\u0410\u0412\u0418\u041b\u042c\u041d\u041e
    • helloworldCommand.php: \u041d\u0415\u041f\u0420\u0410\u0412\u0418\u041b\u042c\u041d\u041e
    • HelloworldCommand.php: \u0412\u0415\u0420\u041d\u041e
    • HelloWorldCommand.php: \u0412\u0415\u0420\u041d\u041e
  2. \u0412\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c ConsoleCommand, \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u0430\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Grav, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430, \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0443 Grav \u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435).
  3. \u041a\u043e\u043d\u0441\u043e\u043b\u044c Symfony \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u0430 execute. \u041f\u0440\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 ConsoleCommand \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f serve.

\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u0435\u0433\u043e \u043a\u0430\u043a HelloCommand.php \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0432 \u0435\u0433\u043e \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 cli/ (user/plugins/my_plugin/cli/HelloCommand.php).

<?php\n\nnamespace Grav\\Plugin\\Console;\n\nuse Grav\\Console\\ConsoleCommand;\nuse Symfony\\Component\\Console\\Input\\InputArgument;\nuse Symfony\\Component\\Console\\Input\\InputOption;\n\n/**\n * Class HelloCommand\n *\n * @package Grav\\Plugin\\Console\n */\nclass HelloCommand extends ConsoleCommand\n{\n    /**\n     * @var array\n     */\n    protected $options = [];\n\n    /**\n     * Greets a person with or without yelling\n     */\n    protected function configure()\n    {\n        $this\n            ->setName(\"hello\")\n            ->setDescription(\"Greets a person.\")\n            ->addArgument(\n                'name',\n                InputArgument::REQUIRED,\n                'The name of the person that should be greeted'\n            )\n            ->addOption(\n                'yell',\n                'y',\n                InputOption::VALUE_NONE,\n                'Wheter the greetings should be yelled or quieter'\n            )\n            ->setHelp('The <info>hello</info> greets someone.')\n        ;\n    }\n\n    /**\n     * @return int|null|void\n     */\n    protected function serve()\n    {\n        // Collects the arguments and options as defined\n        $this->options = [\n            'name' => $this->input->getArgument('name'),\n            'yell' => $this->input->getOption('yell')\n        ];\n\n        // Prepare the strings we want to output and wraps the name into a cyan color\n        // More colors available at:\n        // https://github.com/getgrav/grav/blob/develop/system/src/Grav/Console/ConsoleTrait.php\n        $greetings = 'Greetings, dear <cyan>' . $this->options['name'] . '</cyan>!';\n\n        // If the optional `--yell` or `-y` parameter are passed in, let's convert everything to uppercase\n        if ($this->options['yell']) {\n            $greetings = strtoupper($greetings);\n        }\n\n        // finally we write to the output the greetings\n        $this->output->writeln($greetings);\n    }\n}\n

\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Error (LogCommand.php). \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0449\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u2014 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d Login (NewUserCommand.php)

"},{"location":"cli-console/scripted-upgrades/","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e","text":""},{"location":"cli-console/scripted-upgrades/#obnovleniia-po-stsenariiu","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e","text":"

\u042d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 Grav-\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Deployer. \u041f\u043e\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0430 \u043d\u0435 \u043c\u043d\u043e\u0433\u043e\u0441\u0430\u0439\u0442\u043e\u0432\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 CLI Grav, \u043d\u043e \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u043d\u0438\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.

\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447, \u043a\u0430\u043a Deployer, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u0441\u0432\u043e\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0430\u043c \u043b\u044e\u0431\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Deployer:

Executing task packages\n\nGPM Releases Configuration: Stable\n\nFound 8 packages installed of which 1 need updating\n\n01. Email           [v2.5.2 -> v2.5.3]\n\nGPM Releases Configuration: Stable\n\nPreparing to install Email [v2.5.3]\n  |- Downloading package...   100%\n  |- Checking destination...  ok\n  |- Installing package...    ok\n  '- Success!\n\nClearing cache\n\nCleared:  /home/username/public_html/deployer/grav/cache/twig/*\nCleared:  /home/username/public_html/deployer/grav/cache/doctrine/*\nCleared:  /home/username/public_html/deployer/grav/cache/compiled/*\n\nTouched: /home/username/public_html/deployer/grav/user/config/system.yaml\n

\u0418 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e: Deployer \u0441\u043a\u0430\u0437\u0430\u043b Grav \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u043e \u043f\u043b\u0430\u0433\u0438\u043d Email \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.

"},{"location":"cli-console/scripted-upgrades/#predvaritelnye-trebovaniia","title":"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f","text":"

\u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 Grav, \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f PHP v7.3.6 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 (CLI), \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043d\u0443\u0436\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 php -v, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043c\u043e\u044f - PHP 7.2.34.

\u0412 \u043e\u0431\u0449\u0438\u0445 \u0441\u0440\u0435\u0434\u0430\u0445 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0430, \u043a\u0430\u043a\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f CLI. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e php74, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441 -v \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 PHP 7.4.12. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: php74 vendor/bin/dep list.

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0441\u0442\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e PHP \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 CLI. \u0423\u0442\u043e\u0447\u043d\u0438\u0442\u0435 \u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0430, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.

"},{"location":"cli-console/scripted-upgrades/#ustanovka","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430","text":"

\u0412 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, public_html \u0438\u043b\u0438 www) \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c deployer \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0435\u0435. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0412\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0430\u0440\u043e\u043b\u0435\u043c (\u0441\u043c. \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e DigitalOcean \u0434\u043b\u044f \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CPanel, \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e).

\u0423 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Grav, \u0430 \u0442\u0430\u043a\u0436\u0435 Composer. \u041d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0445\u043e\u0441\u0442\u0430\u0445 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Composer, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 composer -v. \u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 SSH - \u0438\u0437 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 - \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c:

export COMPOSERDIR=~/bin;mkdir bin\ncurl -sS https://getcomposer.org/installer | php -- --install-dir=$COMPOSERDIR --filename=composer\n

\u0418\u043b\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u043f\u0430\u043f\u043a\u0435 public_html/deployer/:

php -r \"copy('https://getcomposer.org/installer', 'composer-setup.php');\"\nphp composer-setup.php\nphp -r \"unlink('composer-setup.php');\"\n

\u041f\u0440\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 composer \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 composer.phar, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e composer. \u0422\u0435\u043f\u0435\u0440\u044c, \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 public_html/deployer/, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Deployer:

composer require deployer/deployer\n

\u0422\u0435\u043f\u0435\u0440\u044c, \u0432\u0441\u0451 \u0435\u0449\u0451 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c deploy.php. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Deployer. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0432 \u0444\u0430\u0439\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

<?php\n\nnamespace Deployer;\nrequire 'vendor/autoload.php';\n\n// Configuration\nset('default_stage', 'production');\nset(php, 'php56');\n\n// Servers\nlocalServer('site1')\n    ->stage('production')\n    ->set('deploy_path', '/home/username/public_html/deployer/grav');\n\ndesc('Backup Grav installations');\ntask('backup', function () {\n    $backup = run('{{php}} bin/grav backup');\n    writeln($backup);\n});\ndesc('Upgrade Grav Core');\ntask('core', function () {\n    $self_upgrade = run('{{php}} bin/gpm self-upgrade -y');\n    writeln($self_upgrade);\n});\ndesc('Upgrade Grav Packages');\ntask('packages', function () {\n    $upgrade = run('{{php}} bin/gpm update -y');\n    writeln($upgrade);\n});\n?>\n
"},{"location":"cli-console/scripted-upgrades/#konfiguratsiia","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u043b\u044f Deployer \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u044f\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430, \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0435\u0451 \u043d\u0430 production. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e php, \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043f\u0443\u0442\u044c \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 PHP. \u041d\u0430\u0448\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:

<?php\n\n// Configuration\nset('default_stage', 'production');\nset(php, 'php56');\n

\u0415\u0441\u043b\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f PHP CLI 5.6* \u0438\u043b\u0438 \u0432\u044b\u0448\u0435, \u0432\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0435\u0451 \u043d\u0430 set(php, 'php');.

"},{"location":"cli-console/scripted-upgrades/#servery","title":"\u0421\u0435\u0440\u0432\u0435\u0440\u044b","text":"

\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432/\u0441\u0430\u0439\u0442\u043e\u0432, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e, \u0441\u043a\u0440\u0438\u043f\u0442 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u043d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c localServer (\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043c. \u0432 \u0433\u043b\u0430\u0432\u0435 Deployer / servers). \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u0430\u0439\u0442\u0430\u043c\u0438:

<?php\n\n// Servers\nlocalServer('site1')\n    ->stage('production')\n    ->set('deploy_path', '/home/username/public_html/deployer/grav1');\nlocalServer('site2')\n    ->stage('production')\n    ->set('deploy_path', '/home/username/public_html/deployer/grav2');\nlocalServer('site3')\n    ->stage('production')\n    ->set('deploy_path', 'C:\\caddy\\grav1');\nlocalServer('site4')\n    ->stage('production')\n    ->set('deploy_path', 'C:\\caddy\\grav2');\n

\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\u043c, \u043d\u043e \u043e\u043d\u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0443\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f SSH. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e Deployer \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043d\u043e \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0438\u043b\u044c\u0434\u0443, \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d HOMEDIR, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: ~/public_html/deployer/grav1.

"},{"location":"cli-console/scripted-upgrades/#zadachi","title":"\u0417\u0430\u0434\u0430\u0447\u0438","text":"

\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0442\u0440\u0438 \u0437\u0430\u0434\u0430\u0447\u0438: \u00ab\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb, \u00ab\u044f\u0434\u0440\u043e\u00bb \u0438 \u00ab\u043f\u0430\u043a\u0435\u0442\u044b\u00bb. \u0417\u0430\u043f\u0443\u0441\u043a php vendor/bin/dep backup \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u0432 deploy_path/backup/BACKUP.zip, \u0433\u0434\u0435 deploy_path - \u044d\u0442\u043e \u043f\u0443\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0434\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.

\u0417\u0430\u043f\u0443\u0441\u043a php vendor/bin/dep core \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0441\u0430\u043c Grav \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c --all-yes, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0442\u0438\u043f\u0430 \u00ab\u0414\u0430/\u041d\u0435\u0442\u00bb. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 php vendor/bin/dep, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442 \u0432\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b.

"},{"location":"cli-console/scripted-upgrades/#vyvod","title":"\u0412\u044b\u0432\u043e\u0434","text":"

\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0430\u0439\u0442\u044b, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0432\u0432\u043e\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 public_html/deployer/, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438:

php vendor/bin/dep backup\nphp vendor/bin/dep core\nphp vendor/bin/dep packages\n

\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043e\u0431\u043d\u043e\u0432\u0438\u043c \u0441\u0430\u043c\u0443 CMS, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b.

"},{"location":"content/collections/","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":""},{"location":"content/collections/#kollektsii-stranits","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u0412 Grav \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u043b\u0438\u0431\u043e \u0432 \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043b\u0438\u0431\u043e \u0432 \u0441\u0430\u043c\u043e\u0439 Twig-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0432 \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430, \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 Twig \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0447\u0442\u043e\u0431\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043d\u0435\u0439 \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u044b \u043f\u043e\u0436\u0435\u043b\u0430\u0435\u0442\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043e\u0449\u043d\u044b\u0435 \u0432\u0435\u0449\u0438. \u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u044d\u0442\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0431\u043b\u043e\u0433\u0435 \u0438\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"content/collections/#obekt-kollektsii","title":"\u041e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e Grav, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u0432 Twig \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0442\u0435\u0440\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438, \u043a\u0430\u043a:

{{ dump(page.collection[page.path]) }}\n
"},{"location":"content/collections/#primer-opredeleniia-kollektsii","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

content:\n    items: '@self.children'\n    order:\n        by: date\n        dir: desc\n    limit: 10\n    pagination: true\n

\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 content.items \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Grav \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u0430\u044f \u0435\u0439, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f.

\u042d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0432\u0441\u0435\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0434\u0430\u0442\u0435 \u0438 \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u043e 10 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0421\u0441\u044b\u043b\u043a\u0438 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043b\u0430\u0433\u0438\u043d Pagination.

"},{"location":"content/collections/#dostup-k-kollektsiiam-v-twig","title":"\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c \u0432 Twig","text":"

\u041a\u043e\u0433\u0434\u0430 \u044d\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435, Grav \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e page.collection, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig:

{% for p in page.collection %}\n<h2>{{ p.title|e }}</h2>\n{{ p.summary|raw }}\n{% endfor %}\n

\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438 \u0440\u0435\u0437\u044e\u043c\u0435.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043e\u0440\u044f\u0434\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:

{% for p in page.collection.order('folder','asc') %}\n<h2>{{ p.title|e }}</h2>\n{{ p.summary|raw }}\n{% endfor %}\n
"},{"location":"content/collections/#zagolovki-kollektsii","title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439","text":"

\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c Grav, \u0447\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0435\u0441\u0442\u044c \u0440\u044f\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:

"},{"location":"content/collections/#svodka-parametrov-kollektsii","title":"\u0421\u0432\u043e\u0434\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"\u0421\u0442\u0440\u043e\u043a\u0430 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 '@root.pages' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f '@root.descendants' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0430\u0439\u0442\u0430 '@root.all' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u0430\u0439\u0442\u0430 '@self.page' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 '@self.parent' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b '@self.siblings' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f, \u0447\u0442\u043e \u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u044f '@self.children' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 '@self.modules' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b '@self.all' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 '@self.descendants' \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u0432\u0441\u0435\u043c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c '@page.page': '/fruit' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 /fruit '@page.parent': '/fruit' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 /fruit '@page.siblings': '/fruit' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f, \u0447\u0442\u043e \u0438 /fruit '@page.children': '/fruit' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 /fruit '@page.modules': '/fruit' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b /fruit '@page.all': '/fruit' \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 /fruit '@page.descendants': '/fruit' \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u0432\u0441\u0435\u043c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c /fruit '@taxonomy.tag': photography \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f \u0441 tag=photography '@taxonomy': {tag: birds, category: blog} \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f \u0441 tag=birds \u0438 category=blog

\u042d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 @page, @taxonomy.category \u0438 \u0442. \u0434., \u043d\u043e \u0434\u043b\u044f YAML \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 page@, taxonomy@.category. \u0412\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b @ \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043b\u0438\u0431\u043e \u0432 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u043e\u043c, \u043b\u0438\u0431\u043e \u0432 \u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.

\u0412 \u0432\u0435\u0440\u0441\u0438\u0438 Grav 1.6 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0431\u044b\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u044b \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b. \u0421\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u043e \u0438\u0445 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.

\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e.

"},{"location":"content/collections/#kornevye-kollektsii","title":"\u041a\u043e\u0440\u043d\u0435\u0432\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":""},{"location":"content/collections/#root-potomki-verkhnego-urovnia","title":"@root - \u041f\u043e\u0442\u043e\u043c\u043a\u0438 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f","text":"

\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e/\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u0430\u0439\u0442\u0430. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

content:\n    items: '@root.pages'\n

\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c '@root.children'. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 '@root' \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.

"},{"location":"content/collections/#root-descendants-vse-stranitsy","title":"@root.descendants - \u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u043e\u0442 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u043d\u0438\u0437 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0432\u0441\u0435\u0445 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u0430\u0439\u0442\u0430:

content:\n    items: '@root.descendants'\n
"},{"location":"content/collections/#root-all-vse-stranitsy-i-moduli","title":"@root.all - \u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043c\u043e\u0434\u0443\u043b\u0438","text":"

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 \u0432\u044b\u0448\u0435, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u0430\u0439\u0442\u0430.

content:\n    items: '@root.all'\n
"},{"location":"content/collections/#samostoiatelnye-kollektsii","title":"\u0421\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":""},{"location":"content/collections/#self-page-tolko-tekushchaia-stranitsa","title":"@self.page - \u0422\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","text":"

\u042d\u0442\u043e \u0432\u0435\u0440\u043d\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.

content:\n    items: '@self.page'\n

\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c '@self.self'.

\u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430, \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430 \u043f\u0443\u0441\u0442\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f.

"},{"location":"content/collections/#self-parent-roditelskaia-stranitsa-tekushchei-stranitsy","title":"@self.parent - \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u043e \u043e\u0441\u043e\u0431\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

content:\n    items: '@self.parent'\n

\u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430 \u043f\u0443\u0441\u0442\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f.

"},{"location":"content/collections/#self-siblings-stranitsy-togo-zhe-urovnia-chto-i-tekushchaia","title":"@self.siblings - \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f, \u0447\u0442\u043e \u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u044f","text":"

\u042d\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0439:

content:\n    items: '@self.siblings'\n
"},{"location":"content/collections/#self-children-dochernie-stranitsy-tekushchei","title":"@self.children - \u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0439","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

content:\n    items: '@self.children'\n

\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c '@self.pages'. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 '@self' \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.

"},{"location":"content/collections/#self-modules-moduli-tekushchei-stranitsy","title":"@self.modules - \u041c\u043e\u0434\u0443\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. (_features, _showcase \u0438 \u0442. \u0434.):

content:\n    items: '@self.modules'\n

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430 '@self.modular' \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e.

"},{"location":"content/collections/#self-all-dochernie-stranitsy-i-moduli-tekushchei-stranitsy","title":"@self.all - \u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

content:\n    items: '@self.all'\n
"},{"location":"content/collections/#self-descendants-dochernie-stranitsy-vse-potomki-tekushchei-stranitsy","title":"@self.descendants - \u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b + \u0432\u0441\u0435 \u043f\u043e\u0442\u043e\u043c\u043a\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041f\u043e\u0434\u043e\u0431\u043d\u043e .children, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f .descendants \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043d\u043e \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u0435\u0449\u0451 \u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0432\u0441\u0435\u0445 \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432:

content:\n    items: '@self.descendants'\n
"},{"location":"content/collections/#kollektsii-stranits_1","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":""},{"location":"content/collections/#page-page-kollektsiia-s-vkliucheniem-tolko-ukazannoi-stranitsy","title":"@page.page - \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (\u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430):

content:\n    items:\n      '@page.page': '/blog'\n

\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c '@page.self': '/blog'.

\u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430, \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430 \u043f\u0443\u0441\u0442\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f.

"},{"location":"content/collections/#page-parent-roditelskaia-stranitsa-konkretnoi-stranitsy","title":"@page.parent - \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u043e \u043e\u0441\u043e\u0431\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

content:\n    items:\n      '@page.parent': '/blog'\n

\u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430 \u043f\u0443\u0441\u0442\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f.

"},{"location":"content/collections/#page-siblings-stranitsy-togo-zhe-urovnia-chto-i-ukazannaia","title":"@page.siblings - \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f, \u0447\u0442\u043e \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f","text":"

\u042d\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0441\u043e\u0431\u0435\u0440\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u0435, \u0447\u0442\u043e \u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u044f, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u0435\u0451 \u0441\u0430\u043c\u0443:

content:\n    items:\n        '@page.siblings': '/blog'\n
"},{"location":"content/collections/#page-children-dochernie-elementy-ukazannoi-stranitsy","title":"@page.children - \u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

content:\n    items:\n      '@page.children': '/blog'\n

\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c '@page.pages': '/blog'. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 '@page': '/blog' \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.

"},{"location":"content/collections/#page-modules-moduli-ukazannoi-stranitsy","title":"@page.modules - \u041c\u043e\u0434\u0443\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

content:\n    items:\n      '@page.modules': '/blog'\n

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430 '@page.modular': '/blog' \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e.

"},{"location":"content/collections/#page-all-dochernie-elementy-i-moduli-ukazannoi-stranitsy","title":"@page.all - \u0414\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

content:\n    items:\n      '@page.all': '/blog'\n
"},{"location":"content/collections/#page-descendants-kollektsiia-dochernikh-elementov-i-vsekh-potomkov-ukazannoi-stranitsy","title":"@page.descendants - \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0432\u0441\u0435\u0445 \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u042d\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438 \u0432\u0441\u0435\u0445 \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

content:\n    items:\n      '@page.descendants': '/blog'\n
"},{"location":"content/collections/#kollektsii-taksonomii","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438","text":"
content:\n   items:\n      '@taxonomy.tag': foo\n

\u0421 \u043e\u043f\u0446\u0438\u0435\u0439 @taxonomy \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0449\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 Grav. \u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f taxonomy \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0430\u0439\u0442\u0430. \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f Grav, \u0447\u0442\u043e\u0431\u044b \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043a\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e.

\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 @taxonomy.tag: foo, Grav \u043d\u0430\u0439\u0434\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 /user/pages, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 tag: foo \u0432 \u0441\u0432\u043e\u0435\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438:

content:\n    items:\n       '@taxonomy.tag': [foo, bar]\n

\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f content.items \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0439 \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0435 \u044d\u0442\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c. \u0411\u0443\u0434\u0443\u0442 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u043a\u0430\u043a \u0442\u0435\u0433 foo, \u0442\u0430\u043a \u0438 \u0442\u0435\u0433 bar. \u0412 \u0433\u043b\u0430\u0432\u0435 \u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f \u044d\u0442\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u0434\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0442 \u0438\u0445 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0433\u043b\u043e\u0432\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u043a {}. \u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: '@taxonomy': {category: [blog, featured], tag: [foo, bar]}. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u0443\u0431-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 category \u0438 tag \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 @taxonomy \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 []. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043e\u0434\u043d\u043e\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440:

content:\n  items:\n    '@taxonomy':\n      category: [blog, featured]\n      tag: [foo, bar]\n

\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u0430. YAML \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u043d\u043e \u0434\u0432\u0430 - \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430. \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 category \u0438 tag \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432 @taxonomy.

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 URL (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, /archive/category:news). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0448\u0430\u0431\u043b\u043e\u043d \u0430\u0440\u0445\u0438\u0432\u0430 \u0431\u043b\u043e\u0433\u0430, \u043d\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e URL. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432 URL, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u043b\u0430\u0433 url_taxonomy_filters: false, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e.

"},{"location":"content/collections/#slozhnye-kollektsii","title":"\u0421\u043b\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u0443\u043c\u043c\u043e\u0439 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

content:\n  items:\n    - '@self.children'\n    - '@taxonomy':\n         category: [blog, featured]\n

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f filter: type: value. \u0422\u0438\u043f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u044b\u043c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445: published, visible, page, module, routable. \u041e\u043d\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u043c\u0435\u0442\u043e\u0434\u0430\u043c, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043d\u0438\u0445 \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0438\u043b\u0438 false. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 type, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u0438\u043c\u044f-\u0448\u0430\u0431\u043b\u043e\u043d\u0430, types, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043c\u0435\u043d-\u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0438 access, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

 content:\n  items: '@self.siblings'\n  filter:\n    visible: true\n    type: 'blog'\n    access: ['site.login']\n

\u0422\u0438\u043f \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c: non-published, non-visible, non-page (=module), non-module (=page) \u0438 non-routable, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0442\u0438\u043f\u0430 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c false.

 content:\n  items: '@self.children'\n  filter:\n    published: false\n

\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Grav 1.6 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0431\u044b\u043b\u0438 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u044b. \u041f\u0440\u0435\u0436\u043d\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b (modular \u0438 non-modular) \u0432\u0441\u0451 \u0435\u0449\u0451 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u043e \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 module \u0438 page \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445.

"},{"location":"content/collections/#varianty-sortirovki","title":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438","text":"
content:\n    order:\n        by: date\n        dir: desc\n    limit: 5\n    pagination: true\n

\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u043c \u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u0447\u0442\u043e \u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0430\u043f\u043e\u043a. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438:

\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 default \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 01.home \u0438\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434 02.advark title \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 basename \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u043e\u043c \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 PHP-\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 basename() date \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0434\u0430\u0442\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 modified \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b folder \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438 \u0441 \u043b\u044e\u0431\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 01. header.x \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u043f\u043e\u043b\u0435 header \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, header.taxonomy.year. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0435\u0440\u0442\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, header.taxonomy.year|2015 random \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a custom \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 content.order.custom manual \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 order_manual. \u0423\u0421\u0422\u0410\u0420\u0415\u041b\u041e sort_flags \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u043b\u0430\u0433\u043e\u0432 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 PHP intl, \u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0438 \u0444\u043b\u0430\u0433\u0438. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 PHP.

\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044fcontent.order.dir \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: desc \u0438\u043b\u0438 asc.

content:\n    order:\n        by: default\n        custom:\n            - _showcase\n            - _highlights\n            - _callout\n            - _features\n    limit: 5\n    pagination: true\n

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e content.order.custom \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0435\u0442 \u0432\u0438\u0442\u0440\u0438\u043d\u0430, \u0437\u0430\u0442\u0435\u043c \u0441\u0435\u043a\u0446\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0442. \u0434. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438, \u0442\u043e Grav \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a content.order.by \u0434\u043b\u044f \u043d\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u0415\u0441\u043b\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0435\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u044f\u0440\u043b\u044b\u043a, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 content.order.custom.

content.pagination \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043b\u0430\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0438 \u0442. \u0434. \u0427\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u0442\u044c, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. content.limit \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"content/collections/#diapazon-dat","title":"\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0434\u0430\u0442","text":"

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0443 \u0434\u0430\u0442:

content:\n    items: '@self.children'\n    dateRange:\n        start: 1/1/2014\n        end: 1/1/2015\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 strtotime(), \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 6 weeks \u0438\u043b\u0438 last Monday, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a 01/23/2014 \u0438\u043b\u0438 23 \u044f\u043d\u0432\u0430\u0440\u044f 2014. DateRange \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0434\u0430\u0442\u0430 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430. \u0414\u0430\u0442\u044b \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u043a\u043e\u043d\u0446\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438, \u043d\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0443.

"},{"location":"content/collections/#neskolko-kollektsii","title":"\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0441 content: items: \u0432 \u0432\u0430\u0448\u0435\u043c YAML, \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u043e\u0434\u043d\u0443 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439. \u041e\u0434\u043d\u0430\u043a\u043e Grav \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443:

content:\n    items: '@self.children'\n    order:\n        by: date\n        dir: desc\n    limit: 10\n    pagination: true\n\nfruit:\n    items:\n       '@taxonomy.tag': [fruit]\n

\u042d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 2 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u0435\u0440\u0432\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e content, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c fruit. \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u0442\u0438\u043c \u0434\u0432\u0443\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c \u0447\u0435\u0440\u0435\u0437 Twig \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:

{% set default_collection = page.collection %}\n{% set fruit_collection = page.collection('fruit') %}\n
"},{"location":"content/collections/#metody-obekta-kollektsii","title":"\u041c\u0435\u0442\u043e\u0434\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Collection::append($items) \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432 Collection::first() \u041f\u043e\u043b\u0443\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Collection::last() \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Collection::random($num) \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c $num \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Collection::reverse() \u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Collection::shuffle() \u041f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c \u0432\u0441\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e Collection::slice($offset, $length) \u041e\u0431\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a

\u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Collection::addPage($page) \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e Collection::copy() \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043f\u0438\u044e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Collection::current() \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Collection::key() \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u0430\u0433 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 Collection::remove($path) \u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0438\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0443\u044e, \u0435\u0441\u043b\u0438 $path = null Collection::order($by, $dir, $manual) \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Collection::intersect($collection2) \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0434\u0432\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0431\u0435\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445 (\u043a\u0430\u043a \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \"\u0418\") Collection::merge($collection2) \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0434\u0432\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 (\u043a\u0430\u043a \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \"\u0418\u041b\u0418\") Collection::isFirst($path) \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 Collection::isLast($path) \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 Collection::prevSibling($path) \u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f Collection::nextSibling($path) \u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f Collection::currentPosition($path) \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 Collection::dateRange($startDate, $endDate, $field) \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043f\u043e \u0434\u0430\u0442\u0430\u043c Collection::visible() \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Collection::nonVisible() \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Collection::pages() \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u043d\u043e \u043d\u0435 \u043c\u043e\u0434\u0443\u043b\u0438) Collection::modules() \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u0438 (\u043d\u043e \u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b) Collection::published() \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Collection::nonPublished() \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 Collection::routable() \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Collection::nonRoutable() \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Collection::ofType($type) \u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c = $type Collection::ofOneOfTheseTypes($types) \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0433\u0434\u0435 \u0448\u0430\u0431\u043b\u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 $types Collection::ofOneOfTheseAccessLevels($levels) \u0424\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 $levels

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438 \u0432 Grav 1.7: Collection::modular() \u0438 Collection::nonModular(). \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 Collection::modules() \u0438 Collection::pages() \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 docs.html.twig \u0442\u0435\u043c\u044b Learn2, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 (\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u0435\u0433\u043e\u0432, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442) \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b Collection::isFirst \u0438 Collection::isLast \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c:

{% set tags = page.taxonomy.tag %}\n{% if tags %}\n    {% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs', 'tag': tags}},'order': {'by': 'default', 'dir': 'asc'}}) %}\n{% else %}\n    {% set progress = page.collection({'items':{'@taxonomy':{'category': 'docs'}},'order': {'by': 'default', 'dir': 'asc'}}) %}\n{% endif %}\n\n{% block navigation %}\n        <div id=\"navigation\">\n        {% if not progress.isFirst(page.path) %}\n            <a class=\"nav nav-prev\" href=\"{{ progress.nextSibling(page.path).url|e }}\"> <i class=\"fa fa-chevron-left\"></i></a>\n        {% endif %}\n\n        {% if not progress.isLast(page.path) %}\n            <a class=\"nav nav-next\" href=\"{{ progress.prevSibling(page.path).url|e }}\"><i class=\"fa fa-chevron-right\"></i></a>\n        {% endif %}\n        </div>\n{% endblock %}\n

nextSibling() \u2014 \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443, prevSibling() \u2014 \u0432\u043d\u0438\u0437 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443, \u0432\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:

\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

Project A\nProject B\nProject C\n

\u0412\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u00ab\u041f\u0440\u043e\u0435\u043a\u0442 A\u00bb, \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u044d\u0442\u043e \u00ab\u041f\u0440\u043e\u0435\u043a\u0442 B\u00bb. \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u00ab\u041f\u0440\u043e\u0435\u043a\u0442 B\u00bb \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u043d\u0435\u0442 \u00ab\u041f\u0440\u043e\u0435\u043a\u0442 C\u00bb, \u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u2014 \u00ab\u041f\u0440\u043e\u0435\u043a\u0442 A\u00bb.

"},{"location":"content/collections/#programmnye-kollektsii","title":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 PHP \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445, \u0442\u0435\u043c\u0430\u0445 Grav \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0438\u0437 Twig. \u042d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0438\u0445 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u043e \u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0438 \u0433\u0438\u0431\u043a\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.

"},{"location":"content/collections/#php-kollektsii","title":"PHP-\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0431\u043e\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PHP, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

<?php\n\n$collection = new Collection($pages);\n$collection->setParams(['taxonomies' => ['tag' => ['dog', 'cat']]])->dateRange('01/01/2016', '12/31/2016')->published()->ofType('blog-item')->order('date', 'desc');\n\n$titles = [];\n\nforeach ($collection as $page) {\n    $titles[] = $page->title();\n}\n

\u0424\u0443\u043d\u043a\u0446\u0438\u044f order() \u043c\u043e\u0436\u0435\u0442 \u0442\u0430\u043a\u0436\u0435, \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c by \u0438 dir, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b manual \u0438 sort_flags. \u042d\u0442\u043e \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432\u044b\u0448\u0435. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434 evaluate(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u043b\u043e\u043a\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445:

<?php\n\n$page = Grav::instance()['page'];\n$collection = $page->evaluate(['@page.children' => '/blog', '@taxonomy.tag' => 'photography']);\n$ordered_collection = $collection->order('date', 'desc');\n

\u0418 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438:

<?php\n\n$ordered_collection = $collection->order('header.price','asc',null,SORT_NUMERIC);\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Twig:

{% set collection = page.evaluate([{'@page.children':'/blog', '@taxonomy.tag':'photography'}]) %}\n{% set ordered_collection = collection.order('date','desc') %}\n
"},{"location":"content/collections/#rasshirennye-kollektsii","title":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0435 page.collection() \u0432 Twig \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435, Grav \u0438\u0449\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c content. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0439\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435.

\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0432\u044b\u0437\u0432\u0430\u0432 page.collection() \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0447\u0442\u043e \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

{% set options = { items: {'@page.children': '/my/pages'}, 'limit': 5, 'order': {'by': 'date', 'dir': 'desc'}, 'pagination': true } %}\n{% set my_collection = page.collection(options) %}\n\n<ul>\n    {% for p in my_collection %}\n        <li>{{ p.title|e }}</li>\n    {% endfor %}\n</ul>\n

\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 (\u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e menu \u0432 \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b):

---\ntitle: Home\nmenu: Home\n---\n
{% set options = { items: {'@root.descendants':''}, 'order': {'by': 'folder', 'dir': 'asc'}} %}\n{% set my_collection = page.collection(options) %}\n\n{% for p in my_collection %}\n{% if p.header.menu %}\n    <ul>\n    {% if page.slug == p.slug %}\n        <li class=\"{{ p.slug|e }} active\"><span>{{ p.menu|e }}</span></li>\n    {% else %}\n        <li class=\"{{ p.slug|e }}\"><a href=\"{{ p.url|e }}\">{{ p.menu|e }}</a></li>\n    {% endif %}\n    </ul>\n{% endif %}\n{% endfor %}\n
"},{"location":"content/collections/#paginatsiia-s-rasshirennymi-kollektsiiami","title":"\u041f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438","text":"

\u0427\u0430\u0441\u0442\u043e \u043c\u044b \u0441\u043b\u044b\u0448\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439. \u041f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f - \u044d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d pagination, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 GPM. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438, \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Twig. \u0427\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 Twig, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 paginate(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 paginate(), \u043d\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0448\u0430\u0431\u043b\u043e\u043d partials/pagination.html.twig \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.

{% set options = { items: {'@root.descendants':''}, 'order': {'by': 'folder', 'dir': 'asc'}} %}\n{% set my_collection = page.collection(options) %}\n{% do paginate( my_collection, 5 ) %}\n\n{% for p in my_collection %}\n    <ul>\n        {% if page.slug == p.slug %}\n            <li class=\"{{ p.slug|e }} active\"><span>{{ p.menu|e }}</span></li>\n        {% else %}\n            <li class=\"{{ p.slug|e }}\"><a href=\"{{ p.url|e }}\">{{ p.menu|e }}</a></li>\n        {% endif %}\n    </ul>\n{% endfor %}\n\n{% include 'partials/pagination.html.twig' with {'base_url':page.url, 'pagination':my_collection.params.pagination} %}\n
"},{"location":"content/collections/#polzovatelskaia-obrabotka-kollektsii-s-sobytiem-oncollectionprocessed","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441 \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c onCollectionProcessed()","text":"

\u0411\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u043d\u043e \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0447\u0435\u0433\u043e-\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0431\u043b\u043e\u0433\u043e\u0432, \u043d\u043e \u0432\u0430\u0448 \u043a\u043b\u0438\u0435\u043d\u0442 \u0445\u043e\u0447\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. \u041e\u043d\u0438 \u0445\u043e\u0442\u044f\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u043b\u043e\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u043c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435.

\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u043e\u043f\u0446\u0438\u044e display_in_listing: false \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430:

---\ntitle: 'My Story'\ndate: '13:34 04/14/2020'\ntaxonomy:\n    tag:\n        - journal\ndisplay_in_listing: false\n---\n...\n

\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435\u0442 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

---\nmenu: News\ntitle: 'My Blog'\ncontent:\n    items:\n        - self@.children\n    order:\n        by: date\n        dir: desc\n    limit: 8\n    pagination: true\n    url_taxonomy_filters: true\n---\n...\n

\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439 self@.chidren \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u0441\u0447\u0435\u0442 \u0442\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 display_in_listing: false? \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u044d\u0442\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u0443\u0434\u0430\u043b\u0438\u043c \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0432\u0438\u0434\u0435\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onCollectionProcessed() \u0432 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044f:

<?php\n\n    public static function getSubscribedEvents(): array\n    {\n        return [\n            ['autoload', 100000],\n            'onPluginsInitialized' => ['onPluginsInitialized', 0],\n            'onCollectionProcessed' => ['onCollectionProcessed', 10]\n        ];\n    }\n

\u0417\u0430\u0442\u0435\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0438 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0438\u0449\u0430 \u043b\u044e\u0431\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u044d\u0442\u0438\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u0435\u0439 display_in_listing:, \u0430 \u0437\u0430\u0442\u0435\u043c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0435\u0433\u043e, \u0435\u0441\u043b\u0438 \u043e\u043d \u0440\u0430\u0432\u0435\u043d false:

<?php\n\n    /**\n     * Remove any page from collection with display_in_listing: false|0\n     *\n     * @param Event $event\n     */\n    public function onCollectionProcessed(Event $event): void\n    {\n        /** @var Collection $collection */\n        $collection = $event['collection'];\n\n        foreach ($collection as $item) {\n            $display_in_listing = $item->header()->display_in_listing ?? true;\n            if ((bool) $display_in_listing === false) {\n                $collection->remove($item->path());\n            }\n        }\n\n    }\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0438 \u0432\u0441\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u044b Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0443 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u0431\u0443\u0434\u0443\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438, \u043a\u0430\u043a \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.

"},{"location":"content/content-pages/","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":""},{"location":"content/content-pages/#stranitsy","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 Grav \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041e\u043d\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Grav.

\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0430 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u043d\u0435\u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u043c\u043e\u0449\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043e\u0449\u043d\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443.

Grav \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 3 \u0442\u0438\u043f\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0430\u0439\u0442\u044b, \u0431\u043e\u0433\u0430\u0442\u044b\u0435 \u0432\u0435\u0431-\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c. \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043c \u044d\u0442\u0438 \u0442\u0438\u043f\u044b:

"},{"location":"content/content-pages/#obychnaia-stranitsa","title":"\u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","text":"

\u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u043a \u0437\u0430\u043f\u0438\u0441\u044c \u0431\u043b\u043e\u0433\u0430, \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0442. \u0434. \u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043b\u044e\u0431\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0439, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0441\u043a\u0430\u0436\u0435\u0442\u0435 Grav \u043e\u0431 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c.

\u041f\u0440\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 Grav core \u0432\u0430\u0441 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0432 \u041a\u0440\u0430\u0442\u043a\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435.

"},{"location":"content/content-pages/#listing","title":"\u041b\u0438\u0441\u0442\u0438\u043d\u0433","text":"

\u042d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b-\u0441\u043f\u0438\u0441\u043a\u0430. \u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0431\u043b\u043e\u0433\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0431\u043b\u043e\u0433\u0430, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u0430\u043a \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439.

\u0422\u0430\u043a\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u0430\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f.

\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u0440\u043a\u0430\u0441\u0430 \u0431\u043b\u043e\u0433\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u043b\u0438\u0441\u0442\u0438\u043d\u0433, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a Grav.

"},{"location":"content/content-pages/#modulnaia-stranitsa","title":"\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","text":"

\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u043e\u0441\u043e\u0431\u044b\u0439 \u0442\u0438\u043f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b-\u0441\u043f\u0438\u0441\u043a\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u0436\u0434\u0430\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0438\u0437 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u044b \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u042d\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u0440\u043a\u0430\u0441\u0430 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u0438\u043a\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a Grav.

\u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0434\u0435\u0442\u0430\u043b\u044f\u043c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 Grav.

\u041c\u043e\u0434\u0443\u043b\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0447\u0435\u0440\u0435\u0437 URL-\u0430\u0434\u0440\u0435\u0441. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435.

"},{"location":"content/content-pages/#papki","title":"\u041f\u0430\u043f\u043a\u0438","text":"

\u0412\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441\u0430\u0439\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 /user/pages. \u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435.

\u0418\u043c\u0435\u043d\u0430 \u043f\u0430\u043f\u043e\u043a \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u043b\u0430\u0433\u0430\u043c\u0438. \u0421\u043b\u0430\u0433\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430, \u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0438\u0440\u0435 \u0438\u043b\u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438\u0445 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.

Grav \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0435 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u043e\u0447\u043a\u0430, \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f, \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0430\u043f\u043a\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c 01.home, Grav \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443 \u043a\u0430\u043a home, \u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0441 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043e\u043d\u0430 \u0438\u0434\u0435\u0442 \u0440\u0430\u043d\u044c\u0448\u0435 02.blog (\u0432 \u043c\u0435\u043d\u044e \u0438 \u0432 \u0438\u043d\u044b\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445).

/user\n\u2514\u2500\u2500 /pages\n    \u251c\u2500\u2500 /01.home\n    \u2502   \u251c\u2500\u2500 /_header\n    \u2502   \u251c\u2500\u2500 /_features\n    \u2502   \u251c\u2500\u2500 /_body\n    \u251c\u2500\u2500 /02.blog\n    \u2502   \u251c\u2500\u2500 /blog-item-1\n    \u2502   \u251c\u2500\u2500 /blog-item-2\n    \u2502   \u251c\u2500\u2500 /blog-item-3\n    \u2502   \u251c\u2500\u2500 /blog-item-4\n    \u2502   \u2514\u2500\u2500 /blog-item-5\n    \u251c\u2500\u2500 /03.about-us\n    \u2514\u2500\u2500 /error\n

\u0412\u0430\u0448 \u0441\u0430\u0439\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 http://yoursite.com Grav \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0441 \u0430\u043b\u0438\u0430\u0441\u043e\u043c home/, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 home.alias \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.

\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c (_) \u043f\u0435\u0440\u0435\u0434 \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u0430\u043f\u043a\u0438. \u042d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c. \u041e\u043d\u0438 \u043d\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043d\u0435 \u0432\u0438\u0434\u043d\u044b \u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0430\u043f\u043a\u0430, \u0442\u0430\u043a\u0430\u044f \u043a\u0430\u043a user/pages/01.home. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 home \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043a\u0430\u043a \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446 _header,_features \u0438 _body.

\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u043d\u043e slug, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c URL. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u0430\u043f\u043a\u0430, \u0442\u0430\u043a\u0430\u044f \u043a\u0430\u043a /user/pages/02.blog, \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043b\u0430\u0433 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e blog, \u0430 \u043f\u043e\u043b\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0443\u0434\u0435\u0442 http://yoursite.com/blog. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u043b\u043e\u0433\u0430, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0432 /user/pages/02.blog/blog-item-5, \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 http://yoursite.com/blog/blog-item-5.

\u0415\u0441\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u043e\u043c\u0435\u0440, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0439 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 error \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0430\u043f\u043e\u043a.

\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 visible \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445.

"},{"location":"content/content-pages/#poriadok","title":"\u041f\u043e\u0440\u044f\u0434\u043e\u043a","text":"

\u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u043f\u0430\u043f\u043e\u043a. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 content.order.by \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b:

\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 default \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0442\u043e \u0435\u0441\u0442\u044c 01.home \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 02.advark title \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435, \u043a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. basename \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0431\u0435\u0437 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 date \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0434\u0430\u0442\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. modified \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0434\u0430\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. folder \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438 \u0441 \u043b\u044e\u0431\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c, \u0442. \u0435. 01., \u0443\u0434\u0430\u043b\u0435\u043d\u043e header.x \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u043f\u043e\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: header.taxonomy.year. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0435\u0440\u0442\u0443: header.taxonomy.year|2015 manual \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 order_manual random \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0443\u043a\u0430\u0437\u0430\u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 content.order.custom. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 content.order.by, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043d \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043d\u043e \u043b\u044e\u0431\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0431\u0443\u0434\u0443\u0442 \u0441\u0431\u0440\u043e\u0448\u0435\u043d\u044b \u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u043f\u043e\u043a \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u0438\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b pages.order.dir \u0438 pages.order.by \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.

"},{"location":"content/content-pages/#fail-stranitsy","title":"\u0424\u0430\u0439\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0412 \u043f\u0430\u043f\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 .md, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0444\u0430\u0439\u043b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Markdown. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u044d\u0442\u043e Markdown \u0441 \u0431\u043b\u043e\u043a\u043e\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 YAML, \u0447\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0435, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041c\u044b \u0441\u043a\u043e\u0440\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0435\u0442\u0430\u043b\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.

\u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u0434\u043b\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u2014 default, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f default.md.

\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0444\u0430\u0439\u043b \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: document.md, \u0447\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442 Grav \u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 document.html.twig \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0442\u0435\u043c\u0435.

\u042d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 template \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445.

\u041f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

---\ntitle: \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\ntaxonomy:\n    category: blog\n---\n
# \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque porttitor eu\nfelis sed ornare. Sed a mauris venenatis, pulvinar velit vel, dictum enim. Phasellus\nac rutrum velit. **Nunc lorem** purus, hendrerit sit amet augue aliquet, iaculis\nultricies nisl. Suspendisse tincidunt euismod risus, _quis feugiat_ arcu tincidunt\neget. Nulla eros mi, commodo vel ipsum vel, aliquet congue odio. Class aptent taciti\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque\nvelit orci, laoreet at adipiscing eu, interdum quis nibh. Nunc a accumsan purus.\n

\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0430\u0440\u043e\u0439 \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432 --- \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0431\u043b\u043e\u043a\u043e\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 YAML \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a YAML \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u044f\u0432\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e blog, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u043f\u043e\u0437\u0436\u0435. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u0441\u043b\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e --- - \u044d\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0435 HTML. \u042d\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 Markdown, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u0437\u043d\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u043c\u0430\u0440\u043a\u0435\u0440\u044b #, ** \u0438 _ \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1, \u043f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439 \u0438 \u043a\u0443\u0440\u0441\u0438\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0444\u0430\u0439\u043b\u044b .md \u043a\u0430\u043a \u0444\u0430\u0439\u043b\u044b \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 UTF-8. \u042d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442 \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430.

"},{"location":"content/content-pages/#razmer-tizera-i-razdelitel","title":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0442\u0438\u0437\u0435\u0440\u0430 \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c","text":"

\u0412 \u0444\u0430\u0439\u043b\u0435 site.yaml \u0435\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0438\u0437\u0435\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 page.summary() \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0438\u0437\u0435\u0440\u0430 \u0438\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0431\u043b\u043e\u0433\u043e\u0432, \u0433\u0434\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u043c\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0434\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0430 \u043d\u0435 \u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e 300 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 user/config/site.yaml, \u043d\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0438\u0437\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f: ===.

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0432 \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435. \u041f\u0440\u0438\u043c\u0435\u0440:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\nconsequat.\n\n===\n\nDuis aute irure dolor in reprehenderit in voluptate velit esse\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n

\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043a\u0441\u0442 \u043d\u0430\u0434 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u043c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f page.summary() \u0438 \u043f\u043e\u043b\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u043d\u0435\u0435 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 page.content().

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 page.summary() \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0442\u0438\u0437\u0435\u0440\u0430, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"content/content-pages/#poisk-drugikh-stranits","title":"\u041f\u043e\u0438\u0441\u043a \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

Grav \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 find(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0440\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435:

# \u0412\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b\n<ul>\n    {% for p in page.find('/projects').children if p != page %}\n        <li><a href=\"{{p.url}}\">{{ p.title }}</a></li>\n    {% endfor %}\n</ul>\n

\u041e\u0431\u044a\u0435\u043a\u0442 pages-object \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Twig \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 Markdown-\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u0431\u044a\u0435\u043a\u0442 page-object \u0438 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0442 \u043d\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 find() - \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c {% for p in page.find('/projects').children %} \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043c\u0435\u043d\u044b \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c\u0443. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e pages \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c Grav, \u0430 page \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u0439, \u0447\u0430\u0441\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"content/content-pages/#contentmeta","title":"contentMeta","text":"

\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u0440\u043e\u0441\u0442\u044b, \u043d\u043e \u043a\u0430\u043a \u043d\u0430\u0441\u0447\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b?

\u041a\u043e\u0433\u0434\u0430 Grav \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u044d\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u043a\u044d\u0448\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 .md. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043f\u043b\u0430\u043d. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0432 \u043a\u044d\u0448\u0435.

\u0412\u043e\u0442 \u0442\u0443\u0442-\u0442\u043e \u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f contentMeta(). \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Shortcode \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0448\u043e\u0440\u0442-\u043a\u043e\u0434\u044b. \u041f\u0440\u0438\u043c\u0435\u0440:

<div id=\"author\">{{ page.find('/my/custom/page').contentMeta.shortcodeMeta.shortcode.section.author }}</div>\n

\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u043e \u0432 \u044f\u0434\u0440\u0435 Shortcode \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f CSS \u0438 JS, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430.

"},{"location":"content/content-types/","title":"\u0422\u0438\u043f\u044b \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430","text":""},{"location":"content/content-types/#tipy-kontenta","title":"\u0422\u0438\u043f\u044b \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430","text":""},{"location":"content/content-types/#tip-kontenta-po-umolchaniiu","title":"\u0422\u0438\u043f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","text":"

\u041a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0432\u0435\u0431-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c, \u0442\u0438\u043f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 Grav \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - HTML. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432 \u0441\u0432\u043e\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: /blog/new-macbook-pros-soon, Grav \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 HTML. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u044b\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430 blog-item.md, Grav, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0438\u0449\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d Twig \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c blog-item.html.twig \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u044f\u0432\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u0442\u0438\u043f \u0447\u0435\u0440\u0435\u0437 /blog/new-macbook-pros-soon.html, Grav \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u0444\u0430\u0439\u043bblog-item.html.twig.

"},{"location":"content/content-types/#drugie-tipy-kontenta","title":"\u0414\u0440\u0443\u0433\u0438\u0435 \u0442\u0438\u043f\u044b \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430","text":"

\u041e\u0434\u043d\u0430\u043a\u043e Grav \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0438\u0431\u043a\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0442\u0438\u043f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0436\u0435\u043b\u0430\u0442\u044c (xml,rss, json, pdf \u0438 \u0442. \u0434.). \u0412\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u0435\u0433\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .xml, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: /blog.xml, \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 blog.html.twig \u0434\u043b\u044f \u0435\u0433\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, Grav \u0438\u0449\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c blog.xml.twig. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0448\u0430\u0431\u043b\u043e\u043d \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 XML.

"},{"location":"content/content-types/#primer-s-json-failami","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441 JSON-\u0444\u0430\u0439\u043b\u0430\u043c\u0438","text":"

\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c - \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 .json. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b\u044b JSON, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f JavaScript.

\u0421\u043a\u0430\u0436\u0435\u043c, \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c frontmatter \u0438 content \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON, \u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c item.md. \u0412\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d Twig \u0441 \u0438\u043c\u0435\u043d\u0435\u043c item.json.twig. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 templates/ \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b, \u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0442\u0443\u0434\u0430.

\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 item.json.twig \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

{% set payload = {frontmatter: page.header, content: page.content}  %}\n{{ payload|json_encode|raw }}\n

\u0412\u0441\u0451, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b Twig, \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043a\u0430\u043a frontmatter \u0438 content, \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 Twig json_encode \u0434\u043b\u044f \u0435\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.

\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 URL /blog/new-macbook-pros-soon.json, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0442 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b Twig \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442:

{\n   \"frontmatter\":{\n      \"title\":\"New Macbook Pros Arriving Soon\",\n      \"date\": \"14:23 08/01/2016\",\n      \"taxonomy\":{\n         \"category\":[\n            \"blog\"\n         ],\n         \"tag\":[\n            \"apple\",\n            \"mbpr\",\n            \"laptops\"\n         ]\n      }\n   },\n   \"content\":\"<p>this has an -&gt; arrow here and <strong>bold</strong> here</p>\\n<blockquote>\\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros.\\n-- <cite> Ronald Wade</cite></p>\\n</blockquote>\\n<p>Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus.</p>\\n<p>This is a new paragraph</p>\\n<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis.</p>\"\n}\n

\u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 JSON, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JavaScript. \u041e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e!

"},{"location":"content/content-types/#polzovatelskie-tipy","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b","text":"

\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0442\u0438\u043f\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, Grav \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u0442\u0438\u043f MIME, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. Grav \u0437\u043d\u0430\u0435\u0442 \u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0432 \u0444\u0430\u0439\u043b\u0435 system/config/media.yaml. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f iCal, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0432 user/config/media.yaml:

  ics:\n    type: iCal\n    thumb: media/thumb.png\n    mime: text/calendar\n

\u042d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 .ics \u043a\u0430\u043a \u0444\u0430\u0439\u043biCal \u0441 \u0442\u0438\u043f\u043e\u043c mime: text/calendar. \u0417\u0430\u0442\u0435\u043c \u0432\u0441\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d .ical.twig \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043b\u044e\u0431\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435.

"},{"location":"content/headers/","title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 / Frontmatter","text":""},{"location":"content/headers/#metadannye-frontmatter","title":"\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 / Frontmatter","text":"

Frontmatter - \u044d\u0442\u043e \u0431\u043b\u043e\u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 Markdown-\u0444\u0430\u0439\u043b\u0430. \u041e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 (\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430), \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0430\u0432\u0442\u043e\u0440, \u0434\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u0434\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f, \u0442\u0435\u0433\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u043e\u043d\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 Grav. \u0412 Grav \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 3 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (\u041e\u0431\u044b\u0447\u043d\u0430\u044f, \u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0438 \u041c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f), \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043d\u0438\u0445 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435.

"},{"location":"content/headers/#osnovnye-metadannye-stranits","title":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"content/headers/#ispolzovanie-kesha","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u044d\u0448\u0430","text":"
cache_enable: false\n

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u0431\u0443\u0434\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0434\u043a\u0430\u0447\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c.

\u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 Twig \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f cache_enable \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f true \u0438\u043b\u0438 false. \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 Twig \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435.

"},{"location":"content/headers/#data","title":"\u0414\u0430\u0442\u0430","text":"
date: 01/01/2014 3:14pm\n

\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f date \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u042d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u043e\u0433\u0434\u0430 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c, \u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e, \u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0414\u0430\u0442\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 m/d/y \u0438\u043b\u0438 d-m-y \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438: \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043a\u043e\u0441\u0443\u044e \u0447\u0435\u0440\u0442\u0443 (/), \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 m/d/y; \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0442\u0438\u0440\u0435 (-) \u0438\u043b\u0438 \u0442\u043e\u0447\u043a\u0443 (.), \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 `d-m-y'.

"},{"location":"content/headers/#meniu","title":"\u041c\u0435\u043d\u044e","text":"
menu: My Page\n

\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f menu \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0434\u043b\u044f \u043c\u0435\u043d\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430, Grav \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e title.

"},{"location":"content/headers/#status-publikatsii","title":"\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438","text":"
published: true\n

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043b\u044e\u0431\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e published: false \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f publish_date \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u0442\u0443 \u0438\u0437 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e, \u0438\u043b\u0438 unpublish_date \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u0442\u0443 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: true \u0438\u043b\u0438 false.

"},{"location":"content/headers/#slag","title":"\u0421\u043b\u0430\u0433","text":"
slug: my-page-slug\n

\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f slug \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: http://yoursite.com/my-page-slug-\u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 URL-\u0430\u0434\u0440\u0435\u0441, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 slug \u0432\u044b\u0448\u0435. \u0415\u0441\u043b\u0438 slug \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, Grav \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438 (\u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432).

\u0421\u043b\u0430\u0433\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0435, \u0441 \u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438, \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438 \u0438\u0437 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430, \u0438 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438, \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0438\u0440\u0435 \u0438\u043b\u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c. \u0425\u043e\u0442\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Grav \u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u0441\u043b\u0430\u0433\u0430\u0445, \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u0438\u043b\u0438 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0431\u0443\u043a\u0432 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u0435\u0441\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435 \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435, \u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0441\u043b\u0430\u0433 \u0431\u0443\u0434\u0435\u0442 primer-soobshhenija-v-bloge.

"},{"location":"content/headers/#taksonomiia","title":"\u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f","text":"
taxonomy:\n    category: blog\n    tag: [\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043c\u043e, cms]\n

\u041e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 taxonomy \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f taxonomy, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u043a\u0430\u043a \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0442\u0438\u043f\u044b \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0430\u0439\u0442\u0430.

\u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0430\u044f\u0441\u044f \u0432 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 blog \u0438 \u0438\u043c\u0435\u0435\u0442 \u0442\u0435\u0433\u0438: \u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043c\u043e \u0438 cms. \u042d\u0442\u0438 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0434\u0430\u0436\u0435 \u0442\u0435\u043c. \u0412 \u0433\u043b\u0430\u0432\u0435 \u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f \u044d\u0442\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e.

"},{"location":"content/headers/#zagolovok","title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","text":"

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0432\u043e\u043e\u0431\u0449\u0435, \u0432\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u043c\u0435\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430\u0434 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. \u041f\u043e \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e title \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

title: \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\n

\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f title \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u0430, Grav \u0438\u043c\u0435\u0435\u0442 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e slug.

"},{"location":"content/headers/#dopolnitelnye-zagolovki","title":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438","text":"

\u041e\u043d\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0432\u0430\u0436\u043d\u044b, \u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0435\u0436\u0435. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"content/headers/#okonchanie-url-adresa","title":"\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430","text":"
append_url_extension: '.json'\n

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0434\u043b\u044f \u043e\u0442\u0432\u0435\u0442\u0430.

"},{"location":"content/headers/#upravlenie-keshem","title":"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u044d\u0448\u0435\u043c","text":"
cache_control: max-age=604800\n

\u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c \u0438\u043b\u0438 \u0438\u043c\u0435\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 cache-control.

"},{"location":"content/headers/#format-daty","title":"\u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b","text":"
dateformat: 'Y-m-d H:i:s'\n

\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Grav \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0434\u0430\u0442 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0434\u0430\u0442.

"},{"location":"content/headers/#otladchik","title":"\u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b system.yaml, \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u0415\u0441\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430\u043c \u0441 \u0432\u044b\u0432\u043e\u0434\u043e\u043c. \u0422\u0430\u043a\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e HTML-\u043a\u043e\u0434\u0430 \u043f\u0440\u0438 AJAX-\u0432\u044b\u0437\u043e\u0432\u0430\u0445. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0432\u0435\u0434\u0435\u043d \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e debugger:

debugger: false\n
"},{"location":"content/headers/#etag","title":"ETag","text":"
etag: true\n

\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 ETag \u0441 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. false \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u0432 \u0432\u0430\u0448\u0435\u043c system.yaml.

"},{"location":"content/headers/#expires","title":"Expires","text":"
expires: 604800\n

\u0412\u0440\u0435\u043c\u044f \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 (604800 \u0441\u0435\u043a\u0443\u043d\u0434 = 7 \u0434\u043d\u0435\u0439) (\u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u044d\u0448\u0430 \u2014 no cache).

"},{"location":"content/headers/#vneshnii-url","title":"\u0412\u043d\u0435\u0448\u043d\u0438\u0439 URL","text":"
external_url: https://www.mysite.com/foo/bar\n

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u044f\u0432\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435.

"},{"location":"content/headers/#kod-otveta-http","title":"\u041a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430 HTTP","text":"
http_response_code: 404\n

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043a\u043e\u0434\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 HTTP.

"},{"location":"content/headers/#iazyk","title":"\u042f\u0437\u044b\u043a","text":"
language: fr\n

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044f\u0437\u044b\u043a \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"content/headers/#data-izmeneniia","title":"\u0414\u0430\u0442\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f","text":"
last_modified: true\n

\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0439 \u0434\u0430\u0442\u043e\u0439. false \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u0432 \u0432\u0430\u0448\u0435\u043c system.yaml.

"},{"location":"content/headers/#lightbox","title":"Lightbox","text":"
lightbox: true\n

\u0425\u043e\u0442\u044f, \u0441\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430 JavaScript \u0438 CSS \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0435\u043c\u0430 Antimatter \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a Featherlight, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0447\u0435\u0440\u0435\u0437 GPM.

"},{"location":"content/headers/#perenapravlenie-posle-avtorizatsii","title":"\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438","text":"
login_redirect_here: false\n

\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a login_redirect_here \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u043e\u0441\u043b\u0435 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d Login. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.

\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432 \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 login_redirect_here.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0443\u043a\u0430\u0437\u0430\u0432 \u044f\u0432\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u0430 YAML:

redirect_after_login: '/profile'\n

\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 /profile \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.

"},{"location":"content/headers/#markdown","title":"Markdown","text":"
  markdown:\n    extra: false\n    auto_line_breaks: false\n    auto_url_links: false\n    escape_markup: false\n    special_chars:\n      '>': 'gt'\n      '<': 'lt'\n
\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 extra: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Markdown Extra (GFM \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) auto_line_breaks: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0430\u0437\u0440\u044b\u0432\u044b \u043b\u0438\u043d\u0438\u0439 auto_url_links: \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 HTML-\u0441\u0441\u044b\u043b\u043a\u0438 escape_markup: \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u0433\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0432 HTML-\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 special_chars: \u0421\u043f\u0438\u0441\u043e\u043a \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0445 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 user/config/system.yaml, \u0438\u043b\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 markdown.

"},{"location":"content/headers/#zapret-keshirovaniia-twig","title":"\u0417\u0430\u043f\u0440\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Twig","text":"
never_cache_twig: true\n

\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u043d\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c/\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443 \u0432 system.yaml \u0438\u043b\u0438 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e true \u0438\u043b\u0438 false.

\u042d\u0442\u043e \u0442\u043e\u043d\u043a\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u043d\u043e \u043e\u043d\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0430\u0441 \u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043d\u0438\u043c. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u043d\u043e \u043d\u0435 Twig. Twig \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e. \u0414\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0444\u043e\u0440\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u044d\u0442\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u043a\u044d\u0448 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e \u0441 twig_first: true, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u0434\u043d\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 Twig.

"},{"location":"content/headers/#obrabotka-teksta","title":"\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","text":"
process:\n    markdown: false\n    twig: true\n

\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u2014 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c markdown, \u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c twig \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u042d\u0442\u043e\u0442 \u0432\u044b\u0431\u043e\u0440 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c Twig \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f process \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435.

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c markdown \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 100% \u0442\u043e\u043b\u044c\u043a\u043e HTML \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: true \u0438\u043b\u0438 false.

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c Twig \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435, \u0438 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 twig \u0432 true.

"},{"location":"content/headers/#prioritet-obrabotki-twig","title":"\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Twig","text":"
twig_first: false\n

\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 Twig \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043b\u044e\u0431\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 Markdown. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448 Twig \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434 Markdown, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c Markdown. \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 cache_enable: false \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0442\u043e \u0438 twig_first: true \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f.

"},{"location":"content/headers/#data-publikatsii","title":"\u0414\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438","text":"
publish_date: 01/23/2015 13:00\n

\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0430\u0442\u0443 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f - \u044d\u0442\u043e \u043b\u044e\u0431\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 strtotime().

"},{"location":"content/headers/#perenapravlenie","title":"\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435","text":"
redirect: '/some/custom/route'\n

\u0438\u043b\u0438

redirect: 'http://someexternalsite.com'\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0438\u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043c\u0435\u043d\u044e \u0438 \u0442. \u0434., \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432 Grav.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 URL, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438:

redirect: '/some/custom/route[303]'\n
"},{"location":"content/headers/#marshrutizatsiia","title":"\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f","text":"
routes:\n  default: '/my/example/page'\n  canonical: '/canonical/url/alias'\n  aliases:\n    - '/some/other/route'\n    - '/can-be-any-valid-slug'\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043f\u0430\u043f\u043e\u043a.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 , \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0432 \u0442\u0435\u043c\u0430\u0445 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438:

<link rel=\"canonical\" href=\"https://yoursite/dresses/green-dresses-are-awesome\" />\n

\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"content/headers/#marshrutiziruemost","title":"\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c","text":"
routable: false\n

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c, \u0432\u0432\u0435\u0434\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0443\u0436\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043d\u043e \u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0442\u0435\u043c\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0425\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u041e\u0448\u0438\u0431\u043a\u0430 404.

Grav \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0449\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c /error, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432 Grav, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u044b, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043b\u044e\u0434\u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0441\u0432\u043e\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f routable, \u0440\u0430\u0432\u043d\u0430\u044f false. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: true \u0438\u043b\u0438 false.

"},{"location":"content/headers/#ssl","title":"SSL","text":"
ssl: true\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SSL on \u0438\u043b\u0438 off. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 absolute_urls: true, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 system.yaml. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 SSL \u0438 \u0431\u0435\u0437 SSL \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0438 \u0445\u043e\u0441\u0442\u043e\u043c.

"},{"location":"content/headers/#tizer","title":"\u0422\u0438\u0437\u0435\u0440","text":"
summary:\n  enabled: true\n  format: short | long\n  size: int\n

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 summary \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 page.summary(). \u042d\u0442\u043e \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0442\u0438\u043f\u0430 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u0431\u043b\u043e\u0433\u0430, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0438\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 enabled: \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0434\u043a\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u0441\u0432\u043e\u0434\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b) format:
  • long = \u041b\u044e\u0431\u043e\u0439 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f
  • short = \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u0443\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0434\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f

\u0410\u0442\u0440\u0438\u0431\u0443\u0442 size \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 short \u0438 long:

\u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 size: 0 \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0441\u0432\u043e\u0434\u043a\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d, \u0441\u0432\u043e\u0434\u043a\u0430 \u0440\u0430\u0432\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0435\u0447\u0435\u043d\u043e \u0434\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f. size: int \u0412\u0441\u0435\u0433\u0434\u0430 \u043e\u0431\u0440\u0435\u0437\u0430\u0439\u0442\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u0441\u043b\u0435 int \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0415\u0441\u043b\u0438 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c, \u0442\u043e \u043e\u0431\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0414\u043b\u0438\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 size: 0 \u0422\u0438\u0437\u0435\u0440 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0435\u043c\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b size: int \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0435\u0447\u0435\u043d\u043e \u043f\u043e\u0441\u043b\u0435 int \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f"},{"location":"content/headers/#shablon","title":"\u0428\u0430\u0431\u043b\u043e\u043d","text":"
template: custom\n

\u041a\u0430\u043a \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u043e \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435, \u0448\u0430\u0431\u043b\u043e\u043d \u0438\u0437 \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 .md.

\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c default.md \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d default \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0442\u0435\u043c\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e template \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0438 \u0432\u044b\u0431\u0440\u0430\u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d.

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d custom \u0438\u0437 \u0442\u0435\u043c\u044b. \u042d\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

"},{"location":"content/headers/#format-shablona","title":"\u0424\u043e\u0440\u043c\u0430\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0430","text":"
template_format: xml\n

\u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, xml, json \u0438 \u0442. \u0434.), \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0432 URL. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u0432\u0435\u0441\u0442\u0438 http://example.com/sitemap.xml, \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig xml, \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043d\u0430 .xml.twig. \u042d\u0442\u043e \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 Grav \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0435\u0449\u0438 \u043f\u0440\u043e\u0441\u0442\u043e.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b template_format, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443, \u043a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0432 URL. \u0412\u0432\u0435\u0434\u044f template_format: xml \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435sitemap, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c http://example.com/sitemap \u0434\u043b\u044f \u043d\u0430\u0441, \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f .xml \u0432 \u043a\u043e\u043d\u0435\u0446.

\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Sitemap.

"},{"location":"content/headers/#data-otmeny-publikatsii","title":"\u0414\u0430\u0442\u0430 \u043e\u0442\u043c\u0435\u043d\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438","text":"
unpublish_date: 05/17/2015 00:32\n

\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0430\u0442\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u0442\u043c\u0435\u043d\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043b\u044e\u0431\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 strtotime().

"},{"location":"content/headers/#vidimost","title":"\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c","text":"
visible: false\n

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u0438\u0434\u0438\u043c\u0430 \u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0430\u044f \u043f\u0430\u043f\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441, \u0442\u043e \u0435\u0441\u0442\u044c /01.home \u0432\u0438\u0434\u043d\u0430, \u0430 /error \u043d\u0435 \u0432\u0438\u0434\u043d\u0430. \u042d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e visible \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: true \u0438\u043b\u0438 false.

"},{"location":"content/headers/#polzovatelskie-zagolovki","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438","text":"

\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043b\u044e\u0431\u043e\u0439 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 YAML. \u041e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u043b\u0438 \u0442\u0435\u043c\u044b. \u0425\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e\u0439 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043a\u0430\u0440\u0442\u044b \u0441\u0430\u0439\u0442\u0430, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a:

sitemap:\n    changefreq: monthly\n    priority: 1.03\n

\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Grav \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041e\u043d\u0438 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c sitemap, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u044d\u0442\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u043a\u0430\u043a\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0435\u0451 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442.

\u041b\u044e\u0431\u043e\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a \u044d\u0442\u043e\u0442, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d, \u0438, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e.

\u0414\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b Twig \u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0415\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 YAML \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

author:\n    name: \u0421\u044d\u043d\u0434\u0438 \u0414\u0436\u043e\u043d\u0441\u043e\u043d\n    twitter: @sandyjohnson\n    bio: \u0421\u044d\u043d\u0434\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0441\u0442\u043e\u043c \u0438 \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 CMS \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c.\n

\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a \u043d\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0438\u0437 Twig:

<section id=\"author-details\">\n    <h2>{{ page.header.author.name }}</h2>\n    <p>{{ page.header.author.bio }}</p>\n    <span>Contact: <a href=\"https://twitter.com/{{ page.header.author.twitter }}\"><i class=\"fa fa-twitter\"></i></a></span>\n</section>\n
"},{"location":"content/headers/#meta-zagolovki","title":"\u041c\u0435\u0442\u0430-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438","text":"

\u041c\u0435\u0442\u0430-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u0433\u043e\u0432 HTML \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 OpenGraph, Facebook \u0438 Twitter

"},{"location":"content/headers/#primer-standartnykh-meta-zagolovkov","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043c\u0435\u0442\u0430-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432","text":"
metadata:\n    refresh: 30\n    generator: 'Grav'\n    description: '\u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b'\n    keywords: 'HTML, CSS, XML, JavaScript'\n    author: '\u0412\u0430\u0441\u044f \u041f\u0443\u043f\u043a\u0438\u043d'\n    robots: 'noindex, nofollow'\n    my_key: 'my_value'\n

\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 HTML:

<meta name=\"generator\" content=\"Grav\" />\n<meta name=\"description\" content=\"\u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\" />\n<meta http-equiv=\"refresh\" content=\"30\" />\n<meta name=\"keywords\" content=\"HTML, CSS, XML, JavaScript\" />\n<meta name=\"author\" content=\"\u0412\u0430\u0441\u044f \u041f\u0443\u043f\u043a\u0438\u043d\" />\n<meta name=\"robots\" content=\"noindex, nofollow\" />\n<meta name=\"my_key\" content=\"my_value\" />\n

\u0412\u0441\u0435 \u043c\u0435\u0442\u0430\u0442\u0435\u0433\u0438 HTML5 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f.

"},{"location":"content/headers/#primer-meta-tegov-opengraph","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u0435\u0442\u0430-\u0442\u0435\u0433\u043e\u0432 OpenGraph","text":"
metadata:\n    'og:title': The Rock\n    'og:type': video.movie\n    'og:url': http://www.imdb.com/title/tt0117500/\n    'og:image': http://ia.media-imdb.com/images/rock.jpg\n

\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 HTML:

<meta name=\"og:title\" property=\"og:title\" content=\"The Rock\" />\n<meta name=\"og:type\" property=\"og:type\" content=\"video.movie\" />\n<meta name=\"og:url\" property=\"og:url\" content=\"http://www.imdb.com/title/tt0117500/\" />\n<meta name=\"og:image\" property=\"og:image\" content=\"http://ia.media-imdb.com/images/rock.jpg\" />\n

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u0430\u0442\u0435\u0433\u0430\u0445 OpenGraph, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.

"},{"location":"content/headers/#primer-meta-tega-facebook","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u0435\u0442\u0430-\u0442\u0435\u0433\u0430 Facebook","text":"
metadata:\n    'fb:app_id': your_facebook_app_id\n

\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 HTML:

<meta name=\"fb:app_id\" property=\"fb:app_id\" content=\"your_facebook_app_id\" />\n

Facebook \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u0442\u0430\u0442\u0435\u0433\u0438 OpenGraph, \u043d\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f Facebook \u0442\u0435\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Grav \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.

"},{"location":"content/headers/#primer-meta-tegov-twitter","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u0435\u0442\u0430-\u0442\u0435\u0433\u043e\u0432 Twitter","text":"
metadata:\n    'twitter:card' : summary\n    'twitter:site' : @flickr\n    'twitter:title' : \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\n    'twitter:description' : \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0432\u043e\u0434\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e\n    'twitter:image' : https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg\n

\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 HTML:

<meta name=\"twitter:card\" property=\"twitter:card\" content=\"summary\" />\n<meta name=\"twitter:site\" property=\"twitter:site\" content=\"@flickr\" />\n<meta name=\"twitter:title\" property=\"twitter:title\" content=\"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\" />\n<meta name=\"twitter:description\" property=\"twitter:description\" content=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0432\u043e\u0434\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e\" />\n<meta name=\"twitter:image\" property=\"twitter:image\" content=\"https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg\" />\n

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u0430\u0442\u0435\u0433\u0430\u0445 Twitter, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.

\u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u0438 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c.

"},{"location":"content/headers/#frontmatter-yaml","title":"Frontmatter.yaml","text":"

\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u2014 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 frontmatter.yaml, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u043c\u0438 \u0441\u0430\u0439\u0442\u0430\u043c\u0438, \u0433\u0434\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0427\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b frontmatter.yaml \u0440\u044f\u0434\u043e\u043c \u0441 \u0444\u0430\u0439\u043b\u043e\u043c \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b .md \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043b\u044e\u0431\u044b\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

metadata:\n    generator: 'Super Grav'\n    description: Give your page a powerup with Grav!\n

\u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0438 \u0432 frontmatter.yaml, \u0438 \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0442\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 frontmatter.yaml \u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

"},{"location":"content/image-linking/","title":"\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","text":""},{"location":"content/image-linking/#ssylki-na-izobrazheniia","title":"\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","text":"

Grav \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0433\u0438\u0431\u043a\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u0430\u0439\u0442\u0430 \u0438 \u0434\u0430\u0436\u0435 \u0438\u0437 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043b\u0438 \u0444\u0430\u0439\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e HTML \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043c\u043d\u043e\u0433\u043e\u0435 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u044b\u043c.

\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u0443 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0443\u044e, \u0443\u0440\u0435\u0437\u0430\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 pages \u0441\u0430\u0439\u0442\u0430 Grav.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0441\u0441\u044b\u043b\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u0434\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435 \u0438 \u0442\u0440\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 /images, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 /images \u0441\u043b\u0443\u0436\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438. \u042d\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0435\u0448\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 /pages, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.

\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043e\u0442 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u0433\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Grav Markdown.

![\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442](../path/image.ext)\n
\u0421\u0442\u0440\u043e\u043a\u0430 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 ! \u041f\u0440\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0433\u0430 \u0441\u0441\u044b\u043b\u043a\u0438 Markdown \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0435\u0433 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. [] \u041a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. () \u0412 \u043a\u0440\u0443\u0433\u043b\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u041e\u043d\u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043a\u043e\u0431\u043a\u0438. ../ \u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0441\u044b\u043b\u043a\u0435, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432 \u0441\u0441\u044b\u043b\u043a\u0443: [![\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442](/path/to/img.jpg)](http://example.net/)

"},{"location":"content/image-linking/#otnositelnyi-slag","title":"\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u0430\u0433","text":"

\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043a\u0430\u043a \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0430\u0439\u043b \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0430\u0439\u043b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u0438\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 /files, \u0433\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435.

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e, \u0447\u0435\u043c \u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0444\u0430\u0439\u043b \u0432 \u043c\u0438\u043a\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u043f\u0443\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438, \u0441\u0441\u044b\u043b\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u043d\u0430.

\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u0441\u044b\u043b\u043e\u043a \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c, \u0438 \u043f\u043e\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0441\u0441\u044b\u043b\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.

\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e \u0438\u043c\u0435\u043d\u0438, \u0430 \u043d\u0435 \u043f\u043e \u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u0438\u043b\u0438 \u044f\u0440\u043b\u044b\u043a\u0443. \u0415\u0441\u043b\u0438 \u0431\u044b \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 pages/01.blog/test-post-1/item.md \u043d\u0430 /pages/01.blog/test-post-3/test-image-3.jpg, \u0432\u044b \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:

![\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 3](../test-post-3/test-image-3.jpg)\n

\u042d\u0442\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u043d\u0430 \u043e\u0434\u043d\u0443 \u043f\u0430\u043f\u043a\u0443 \u0432\u0432\u0435\u0440\u0445, \u043a\u0430\u043a \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043e ../, \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u043e\u0434\u043d\u0443 \u043f\u0430\u043f\u043a\u0443 \u0432\u043d\u0438\u0437, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043f\u0440\u044f\u043c\u043e \u043d\u0430 test-image-3.jpg \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.

\u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c blog-header.jpg \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043001.blog, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

![\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0431\u043b\u043e\u0433\u0430](/blog/blog-header.jpg)\n

\u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 (01.) \u0434\u043b\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430.

Grav \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u043b\u0430\u0433\u043e\u0432 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e\u0442 \u044f\u0440\u043b\u044b\u043a \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0432\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435\u0441\u044f \u0432 \u043d\u0435\u0439 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Test Post 2 \u0438\u043c\u0435\u0435\u0442 \u044f\u0440\u043b\u044b\u043a, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 \u0435\u0433\u043e markdown-\u0444\u0430\u0439\u043b (/pages/01.blog/test-post-2/item.md). \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

---\ntitle: Test Post 2\nslug: test-slug\ntaxonomy:\n    category: blog\n---\n

\u0412\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u044f\u0440\u043b\u044b\u043a test-slug. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044f\u0440\u043b\u044b\u043a\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438. \u041a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435, \u043e\u043d\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0432\u044f\u0437\u0438. \u0415\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d \u0441\u043b\u0430\u0433, \u0442\u043e \u043b\u044e\u0431\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043b\u0430\u0433\u043e\u043c \u0438\u043b\u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u0441 \u043f\u043e\u043b\u043d\u044b\u043c URL-\u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u0441\u0441\u044b\u043b\u043a\u0438.

\u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u0432\u044f\u0437\u0430\u0442\u044c test-image-2.jpg \u0441 Test Post 2, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0432\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

![\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 2](../test-slug/test-image-2.jpg)\n

\u0412\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432\u0432\u0435\u0440\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f (../), \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u043d\u0438\u0437 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b test-slug, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f slug, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u0444\u0430\u0439\u043b\u0435 /pages/01.blog/test-post-2/item.md.

"},{"location":"content/image-linking/#otnositelnaia-direktoriia","title":"\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f","text":"

\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u044f\u0440\u043b\u044b\u043a\u0430 \u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0440\u043b\u044b\u043a\u043e\u0432 URL \u0432\u044b \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0435\u0441\u044c \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u043f\u0430\u043f\u043e\u043a.

\u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435:

![\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 3](/01.blog/02.my_folder/test-image-3.jpg)\n

\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043e\u043a \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 Grav, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a GitHub.

"},{"location":"content/image-linking/#absoliutnye-ssylki","title":"\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438","text":"

\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u043d\u043e \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043a\u043e\u0440\u043d\u044e \u0441\u0430\u0439\u0442\u0430. \u0412 Grav \u043a\u043e\u0440\u043d\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f /user/pages/. \u042d\u0442\u043e\u0442 \u0442\u0438\u043f \u0441\u0441\u044b\u043b\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u0442\u0438\u043b\u044e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043b\u0430\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432 \u043f\u0443\u0442\u0438 \u0438\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043f\u043e\u0437\u0436\u0435 (\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438), \u0440\u0430\u0437\u0440\u044b\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0443. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438.

\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 /. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 pages/01.blog/test-post-2/test-image-2.jpg \u0432 \u0441\u0442\u0438\u043b\u0435 \u0441\u043b\u0430\u0433 \u0438\u0437 pages/01.blog/blog.md.

![\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 2](/blog/test-slug/test-image-2.jpg)\n

\u041c\u043e\u0449\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 user/pages/images/ \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 Grav \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u044e\u0434\u0430 \u0441\u0432\u043e\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0441 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Grav: /images/test-image-4.jpg \u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043d\u0438\u043c\u0438.

"},{"location":"content/image-linking/#potoki-php","title":"\u041f\u043e\u0442\u043e\u043a\u0438 PHP","text":"

\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0442\u043e\u043a\u0438 PHP. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 PHP, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435:

  • user:// - \u043f\u0430\u043f\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user/
  • page:// - \u043f\u0430\u043f\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user/pages/
  • image:// - \u043f\u0430\u043f\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user/images/
  • plugins:// - \u043f\u0430\u043f\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user/plugins/
  • theme:// - \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u0435\u043c\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user/themes/antimatter/

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (user/pages/).

![Stream Image](user://media/images/my-image.jpg)\n

\u0438\u043b\u0438:

![Stream Image](theme://images/my-image.jpg)\n

\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043c. \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u0441\u0430\u0439\u0442\u0430 - \u041f\u043e\u0442\u043e\u043a\u0438.

"},{"location":"content/image-linking/#polnye-url-adresa-izobrazhenii","title":"\u041f\u043e\u043b\u043d\u044b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439","text":"

\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0430\u0439\u0442\u0430\u0445, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0435\u0437 \u0435\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441. \u042d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043d\u043e \u043c\u043e\u0436\u0435\u0442. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0435\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0443:

![Remote Image 1](https://getgrav.org/images/testimage.png)\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u044f\u043c\u043e\u0439 URL, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 HTTPS.

"},{"location":"content/image-linking/#deistviia-multimedia-s-izobrazheniiami","title":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438","text":"

\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u043c\u043e\u0449\u043d\u044b\u0445 \u043c\u0435\u0434\u0438\u0430-\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 Grav. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0441\u0442\u0440\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

![Styling Example](../test-post-3/test-image-3.jpg?cropResize=400,200)\n

\u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u0435:

![Stream Image](theme://images/default-avatar.jpg?cropZoom=200,200&brightness=-75)\n

\u0412\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u0445 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435.

"},{"location":"content/image-linking/#atributy-izobrazheniia","title":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","text":"

\u041e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043d\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u2014 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Markdown. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b HTML classes \u0438 id \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Markdown Extra.

\u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u044d\u0442\u043e\u0433\u043e:

"},{"location":"content/image-linking/#odinochnyi-klass","title":"\u041e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441","text":"
![My Image](my-image.jpg?classes=float-left)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<img src=\"/your/pages/some-page/my-image.jpg\" class=\"float-left\" />\n
"},{"location":"content/image-linking/#neskolko-klassov","title":"\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0441\u0441\u043e\u0432","text":"
![My Image](my-image.jpg?classes=float-left,shadow)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<img src=\"/your/pages/some-page/my-image.jpg\" class=\"float-left shadow\" />\n
"},{"location":"content/image-linking/#atribut-id","title":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442 ID","text":"
![My Image](my-image.jpg?id=special-id)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<img src=\"/your/pages/some-page/my-image.jpg\" id=\"special-id\" />\n
"},{"location":"content/linking/","title":"\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":""},{"location":"content/linking/#ssylki-na-stranitsy","title":"\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

Grav \u0438\u043c\u0435\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0433\u0438\u0431\u043a\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u0441\u044b\u043b\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0438 \u0434\u0430\u0436\u0435 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043b\u0438 \u0444\u0430\u0439\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e HTML \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043c\u043d\u043e\u0433\u043e\u0435 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043d\u044f\u0442\u044c.

\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u0443 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0443\u044e, \u0443\u0440\u0435\u0437\u0430\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 user/pages \u0441\u0430\u0439\u0442\u0430 Grav.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0441\u0441\u044b\u043b\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435.

\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043e\u0442 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 Grav-\u0441\u0441\u044b\u043b\u043a\u0438 \u0438 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.

[\u0421\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442](../path/slug/page)\n
\u0421\u0442\u0440\u043e\u043a\u0430 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 [] \u041a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0442\u0435\u043a\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430. \u0412 HTML \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0436\u0434\u0443 <a href=\"\"> \u0438 </a>. () \u041a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438. \u041e\u043d\u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043a\u043e\u0431\u043a\u0438.. ../ \u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0441\u044b\u043b\u043a\u0435, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443."},{"location":"content/linking/#otnositelnyi-slag","title":"\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u0430\u0433","text":"

Grav \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0444\u0430\u0439\u043b\u043e\u0432/\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u044f\u0440\u043b\u044b\u043a\u0438, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0444\u0430\u0439\u043b\u0430, \u0442\u0430\u043a \u0438 \u0432 \u0438\u043c\u0435\u043d\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u042d\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430, \u0430 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u044f\u0440\u043b\u044b\u043a.

\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u043d\u0438\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u043b\u043e\u0433 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 item.md \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435. \u0421\u0430\u043c\u043e\u043c\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044e \u0432 \u0431\u043b\u043e\u0433\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u044f\u0440\u043b\u044b\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 grass \u0438\u043b\u0438 grass-is-green.

\u0418\u043c\u0435\u043d\u0430\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u044b \u043d\u043e\u043c\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0440\u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u0438. \u042d\u0442\u0438 \u0447\u0438\u0441\u043b\u0430 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0441\u044b\u043b\u043a\u0438, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u0441\u043b\u0430\u0433\u0430\u043c. Grav \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043b\u0430\u0433\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0441\u0442\u043e\u0439.

\u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441\u0441\u044b\u043b\u043e\u043a \u0441 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043b\u0430\u0433\u043e\u043c.

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 pages/01.blue/02.water/item.md, \u0438\u0437 pages/01.blue/01.sky/item.md. \u0423 \u0444\u0430\u0439\u043b\u0430 item.md \u043d\u0435\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043b\u0430\u0433\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.

[\u0441\u0441\u044b\u043b\u043a\u0430](../water)\n

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0432\u0435\u0449\u044c, \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044f pages/01.blue/01.sky/item.md \u0441 pages/02.green/02.tree/item.md, \u043d\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0444\u0430\u0439\u043b\u0430 item.md \u0444\u0430\u0439\u043b\u0443 tree-is-green \u0431\u044b\u043b \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0441\u043b\u0430\u0433.

[\u0441\u0441\u044b\u043b\u043a\u0430](/green/tree-is-green)\n

\u0421\u043b\u0430\u0433, \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0439 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a item.md, \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043b\u0430\u0433 green \u0438\u0437 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

"},{"location":"content/linking/#otnositelnaia-direktoriia","title":"\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f","text":"

\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0430\u0439\u043b \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0430\u0439\u043b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u0441\u043b\u043e\u0436\u043d\u0430\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435/\u0444\u0430\u0439\u043b\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c.

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e, \u0447\u0435\u043c \u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0444\u0430\u0439\u043b \u0432 \u043c\u0438\u043a\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u043f\u0443\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438, \u0441\u0441\u044b\u043b\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u043d\u0430.

\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u0441\u044b\u043b\u043e\u043a \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c, \u0438 \u043f\u043e\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0441\u0441\u044b\u043b\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.

\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e \u0438\u043c\u0435\u043d\u0438, \u0430 \u043d\u0435 \u043f\u043e \u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u0438\u043b\u0438 \u044f\u0440\u043b\u044b\u043a\u0443. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u0441 pages/01.blue/01.sky/item.md \u043d\u0430 /pages/02.green/01.grass/item.md, \u0432\u044b \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443.

[\u0441\u0441\u044b\u043b\u043a\u0430](/02.green/01.grass/item.md)\n

\u042d\u0442\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u0434\u0432\u0435 \u043f\u0430\u043f\u043a\u0438 \u0432\u0432\u0435\u0440\u0445, \u043a\u0430\u043a \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043e /, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u043d\u0438\u0437 \u043d\u0430 \u0434\u0432\u0435 \u043f\u0430\u043f\u043a\u0438, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 item.md \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.

\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0442\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, Grav \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0414\u043b\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav \u044d\u0442\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439.

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c pages/01.blue/01.sky/item.md \u0441 /pages/02.green/, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0444\u0430\u0439\u043b color.md.

[\u0441\u0441\u044b\u043b\u043a\u0430](/02.green)\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0430 \u0434\u0432\u0430 \u0448\u0430\u0433\u0430 \u0432\u044b\u0448\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0444\u0430\u0439\u043b\u043e\u043c, \u043c\u044b \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u0441 \u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u0444\u0430\u0439\u043b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0444\u0430\u0439\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u0441 pages/01.blue/01.sky/item.md \u043d\u0430 /pages/02.green/01.grass/, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443.

[\u0441\u0441\u044b\u043b\u043a\u0430](/02.green/01.grass)\n
"},{"location":"content/linking/#absoliutnye-ssylki","title":"\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438","text":"

\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c, \u043d\u043e \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043a\u043e\u0440\u043d\u044e \u0441\u0430\u0439\u0442\u0430. \u0412 Grav \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 /user/pages/. \u042d\u0442\u043e\u0442 \u0442\u0438\u043f \u0441\u0441\u044b\u043b\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u0442\u0438\u043b\u044e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0430\u0433\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432 \u043f\u0443\u0442\u0438 \u0438\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438\u043b\u0438 \u0438\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043f\u043e\u0437\u0436\u0435 (\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438), \u0440\u0430\u0437\u0440\u044b\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0443. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438.

\u0412 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u0441\u0441\u044b\u043b\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 /. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 pages/01.blue/01.sky/item.md \u0432 \u0441\u0442\u0438\u043b\u0435 \u0441\u043b\u0430\u0433.

[\u0441\u0441\u044b\u043b\u043a\u0430](/blue/sky)\n

\u0412\u0442\u043e\u0440\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0441\u0442\u0438\u043b\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u043d\u0435\u0435. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u0430\u043a \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u043c\u0435\u043d \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432. \u0425\u043e\u0442\u044f \u044d\u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438, \u043a\u0430\u043a Github, \u0433\u0434\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 Grav. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 pages/01.blue/01.sky/item.md \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f.

[\u0441\u0441\u044b\u043b\u043a\u0430](/01.blue/01.sky)\n
"},{"location":"content/linking/#udalennye-ssylki","title":"\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438","text":"

\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0447\u0435\u0440\u0435\u0437 \u0435\u0433\u043e URL. \u042d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043d\u043e \u043c\u043e\u0436\u0435\u0442. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 Google.

[\u0441\u0441\u044b\u043b\u043a\u0430](https://www.google.com)\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u044f\u043c\u043e\u0439 URL, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 HTTPS. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

[\u0441\u0441\u044b\u043b\u043a\u0430](https://github.com)\n
"},{"location":"content/linking/#atributy-ssylki","title":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441\u0441\u044b\u043b\u043a\u0438","text":"

\u041e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043d\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u2014 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Markdown. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b HTML class, id, rel \u0438 target \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Markdown Extra.

\u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u044d\u0442\u043e\u0433\u043e:

"},{"location":"content/linking/#atribut-class-classes","title":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442 Class/Classes","text":"
[\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430](../some-page?classes=button,big)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"/your/pages/some-page\" class=\"button big\">\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430</a>\n
"},{"location":"content/linking/#atribut-id","title":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442 ID","text":"
[\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430](../some-page?id=important-button)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"/your/pages/some-page\" id=\"important-button\">\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430</a>\n
"},{"location":"content/linking/#atribut-rel","title":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442 Rel","text":"
[\u0421\u0441\u044b\u043b\u043a\u0430 \u0441 NoFollow](../some-page?rel=nofollow)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"/your/pages/some-page\" rel=\"nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430 \u0441 NoFollow</a>\n
"},{"location":"content/linking/#atribut-target","title":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442 Target","text":"
[\u0421\u0441\u044b\u043b\u043a\u0430 \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0435](../some-page?target=_blank)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"/your/pages/some-page\" target=\"_blank\">\u0421\u0441\u044b\u043b\u043a\u0430 \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0435</a>\n
"},{"location":"content/linking/#kombinatsii-atributov","title":"\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432","text":"
[\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432](../some-page?target=_blank&classes=button)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"/your/pages/some-page\" target=\"_blank\" class=\"button\">\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432</a>\n
"},{"location":"content/linking/#kombinatsii-atributov-s-iakoriami","title":"\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0441 \u044f\u043a\u043e\u0440\u044f\u043c\u0438","text":"
[\u042f\u043a\u043e\u0440\u044c \u0441\u0441\u044b\u043b\u043a\u0438](../some-page?target=_blank&classes=button#element-id)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"/your/pages/some-page#element-id\" target=\"_blank\" class=\"button\">\u042f\u043a\u043e\u0440\u044c \u0441\u0441\u044b\u043b\u043a\u0438</a>\n
"},{"location":"content/linking/#iakornye-ssylki-na-toi-zhe-stranitse","title":"\u042f\u043a\u043e\u0440\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435","text":"
[\u042f\u043a\u043e\u0440\u044c \u0441\u0441\u044b\u043b\u043a\u0438](?classes=button#element-id)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"#element-id\" class=\"button\">\n

\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 1324

"},{"location":"content/linking/#peredacha-nepodderzhivaemykh-atributov","title":"\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432","text":"
[\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 'cat'](../some-page?classes=underline&cat=black)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"/your/pages/some-page?cat=black\" class=\"underline\">\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 'cat'</a>\n
"},{"location":"content/linking/#propusk-vsekh-atributov","title":"\u041f\u0440\u043e\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432","text":"
[\u041f\u0440\u043e\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432](../some-page?classes=underline&rel=nofollow&noprocess)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"/your/pages/some-page?rel=nofollow&classes=underline\">\u041f\u0440\u043e\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432</a>\n
"},{"location":"content/linking/#propusk-opredelennykh-atributov","title":"\u041f\u0440\u043e\u043f\u0443\u0441\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432","text":"
[\u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b](../some-page?id=myvariable&classes=underline&target=_blank&noprocess=id,classes)\n

\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 HTML:

<a href=\"/your/pages/some-page?id=myvariable&classes=underline\" target=\"_blank\">\u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b</a>\n

\u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432, \u043d\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044f \u0434\u0440\u0443\u0433\u0438\u0435.

"},{"location":"content/markdown/","title":"\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Markdown","text":""},{"location":"content/markdown/#sintaksis-markdown","title":"\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Markdown","text":"

\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0430\u0432\u0434\u0435 \u0432 \u0433\u043b\u0430\u0437\u0430: \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0443\u0442\u043e\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b WYSIWYG \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044e\u0442 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0443\u0436\u0430\u0441\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0438\u043b\u0438, \u0447\u0442\u043e \u0435\u0449\u0451 \u0445\u0443\u0436\u0435, \u0443\u0440\u043e\u0434\u043b\u0438\u0432\u044b\u043c \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c.

Markdown \u2014 \u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c HTML, \u0431\u0435\u0437 \u0432\u0441\u0435\u0445 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0443\u0440\u043e\u0434\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0442 \u0435\u0433\u043e.

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432:

  1. Markdown \u043f\u0440\u043e\u0441\u0442 \u0432 \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u0438, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435.
  2. \u041c\u0435\u043d\u044c\u0448\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438.
  3. \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 XHTML.
  4. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.
  5. \u041f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043b\u044e\u0431\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 Markdown, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f.
  6. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Markdown \u2014 \u043e\u0434\u043d\u043e \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435!

\u0414\u0436\u043e\u043d \u0413\u0440\u0443\u0431\u0435\u0440, \u0430\u0432\u0442\u043e\u0440 Markdown, \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c \u0442\u0430\u043a:

\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Markdown - \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c. \u0418\u0434\u0435\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Markdown \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u043d\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043e\u043d \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d \u0442\u0435\u0433\u0430\u043c\u0438 \u0438\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Markdown \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 HTML, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 Markdown \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b. -- \u0414\u0436\u043e\u043d \u0413\u0440\u0443\u0431\u0435\u0440

Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 Markdown \u0438 Markdown Extra. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c Markdown Extra \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 system.yaml.

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b Markdown \u0438 \u0442\u043e, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 HTML:

\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0438 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c!

"},{"location":"content/markdown/#zagolovki","title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438","text":"

\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043e\u0442 h1 \u0434\u043e h6 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f:

# \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h1\n## \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h2\n### \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h3\n#### \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h4\n##### \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h5\n###### \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h6\n

HTML:

<h1>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h1</h1>\n<h2>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h2</h2>\n<h3>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h3</h3>\n<h4>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h4</h4>\n<h5>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h5</h5>\n<h6>\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h6</h6>\n
"},{"location":"content/markdown/#kommentarii","title":"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438","text":"

\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 HTML

<!--\n\u042d\u0442\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439\n-->\n

\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043d\u0438\u0436\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u0435\u043d:

"},{"location":"content/markdown/#gorizontalnye-linii","title":"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438","text":"

\u042d\u043b\u0435\u043c\u0435\u043d\u0442 HTML <hr> \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u00ab\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u044b\u0432\u0430\u00bb \u043c\u0435\u0436\u0434\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0430\u0431\u0437\u0430\u0446\u0430. \u0412 Markdown \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c

\u043b\u044e\u0431\u044b\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043d\u0438\u0436\u0435:
  • ___: \u0442\u0440\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f
  • ---: \u0442\u0440\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0438\u0440\u0435
  • ***: \u0442\u0440\u0438 \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0438 \u043f\u043e\u0434\u0440\u044f\u0434

\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

"},{"location":"content/markdown/#obychnyi-tekst","title":"\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442","text":"

\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u0442\u0435\u0433\u0438 <p> </p> \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u043c HTML.

\u0418\u0442\u0430\u043a, \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442:

Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.\n

\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0442\u0430\u043a\u043e\u0439 HTML:

<p>Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.</p>\n

\u0420\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0441 2 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 1 \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u0442\u0440\u043e\u043a\u0438.

"},{"location":"content/markdown/#vstroennyi-html","title":"\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 HTML","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 HTML-\u0442\u0435\u0433 (\u0441 \u043a\u043b\u0430\u0441\u0441\u043e\u043c), \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 HTML:

\u0410\u0431\u0437\u0430\u0446 \u0432 Markdown.\n\n<div class=\"class\">\n    \u042d\u0442\u043e <b>HTML</b>\n</div>\n\n\u0410\u0431\u0437\u0430\u0446 \u0432 Markdown.\n
"},{"location":"content/markdown/#aktsent","title":"\u0410\u043a\u0446\u0435\u043d\u0442","text":""},{"location":"content/markdown/#zhirnyi","title":"\u0416\u0438\u0440\u043d\u044b\u0439","text":"

\u0414\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0432\u0435\u0441\u043e\u043c \u0448\u0440\u0438\u0444\u0442\u0430.

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u0436\u0438\u0440\u043d\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c.

**\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0436\u0438\u0440\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442**\n

\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0436\u0438\u0440\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442

\u0438 \u0442\u0430\u043a\u043e\u0439 HTML:

<strong>\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0436\u0438\u0440\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442</strong>\n
"},{"location":"content/markdown/#kursiv","title":"\u041a\u0443\u0440\u0441\u0438\u0432","text":"

\u0414\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u0443\u0440\u0441\u0438\u0432\u043e\u043c.

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043a\u0430\u043a \u043a\u0443\u0440\u0441\u0438\u0432.

_\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0443\u0440\u0441\u0438\u0432_\n

\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0443\u0440\u0441\u0438\u0432

\u0438 \u0442\u0430\u043a\u043e\u0439 HTML:

<em>\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0443\u0440\u0441\u0438\u0432</em>\n
"},{"location":"content/markdown/#zacherknutyi","title":"\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","text":"

\u0412 GFM (GitHub Flavored Markdown) \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f.

~~\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0438 \u044d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442.~~\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

~~\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0438 \u044d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442.~~

HTML:

<del>\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0438 \u044d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442.</del>\n
"},{"location":"content/markdown/#tsitaty","title":"\u0426\u0438\u0442\u0430\u0442\u044b","text":"

\u0414\u043b\u044f \u0446\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435.

\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 > \u043f\u0435\u0440\u0435\u0434 \u043b\u044e\u0431\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0446\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.

> **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined.\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

Fusion Drive combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined.

\u0438 \u0442\u0430\u043a\u043e\u0439 HTML:

<blockquote>\n  <p><strong>Fusion Drive</strong> combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined.</p>\n</blockquote>\n

\u0426\u0438\u0442\u0430\u0442\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438:

> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue.\nNunc augue augue, aliquam non hendrerit ac, commodo vel nisi.\n>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor\nodio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam.\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi.

Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam.

"},{"location":"content/markdown/#uvedomleniia","title":"\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f","text":"

\u0421\u0442\u0430\u0440\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439, \u043e\u0442\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0431\u043b\u043e\u0447\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u0435\u043a (>>>), \u0443\u0441\u0442\u0430\u0440\u0435\u043b. \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c Markdown Notices

"},{"location":"content/markdown/#spiski","title":"\u0421\u043f\u0438\u0441\u043a\u0438","text":""},{"location":"content/markdown/#neuporiadochennyi","title":"\u041d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439","text":"

\u0421\u043f\u0438\u0441\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u044f\u0432\u043d\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u043a\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441\u043f\u0438\u0441\u043a\u0430:

* \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u043a\u0435\u0440\n- \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u043a\u0435\u0440\n+ \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u043a\u0435\u0440\n

\u041f\u0440\u0438\u043c\u0435\u0440

+ Lorem ipsum dolor sit amet\n+ Consectetur adipiscing elit\n+ Integer molestie lorem at massa\n+ Facilisis in pretium nisl aliquet\n+ Nulla volutpat aliquam velit\n  - Phasellus iaculis neque\n  - Purus sodales ultricies\n  - Vestibulum laoreet porttitor sem\n  - Ac tristique libero volutpat at\n+ Faucibus porta lacus fringilla vel\n+ Aenean sit amet erat nunc\n+ Eget porttitor lorem\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

  • Lorem ipsum dolor sit amet
  • Consectetur adipiscing elit
  • Integer molestie lorem at massa
  • Facilisis in pretium nisl aliquet
  • Nulla volutpat aliquam velit
  • Phasellus iaculis neque
  • Purus sodales ultricies
  • Vestibulum laoreet porttitor sem
  • Ac tristique libero volutpat at
  • Faucibus porta lacus fringilla vel
  • Aenean sit amet erat nunc
  • Eget porttitor lorem

\u0418 \u0442\u0430\u043a\u043e\u0439 HTML

<ul>\n  <li>Lorem ipsum dolor sit amet</li>\n  <li>Consectetur adipiscing elit</li>\n  <li>Integer molestie lorem at massa</li>\n  <li>Facilisis in pretium nisl aliquet</li>\n  <li>Nulla volutpat aliquam velit\n    <ul>\n      <li>Phasellus iaculis neque</li>\n      <li>Purus sodales ultricies</li>\n      <li>Vestibulum laoreet porttitor sem</li>\n      <li>Ac tristique libero volutpat at</li>\n    </ul>\n  </li>\n  <li>Faucibus porta lacus fringilla vel</li>\n  <li>Aenean sit amet erat nunc</li>\n  <li>Eget porttitor lorem</li>\n</ul>\n
"},{"location":"content/markdown/#uporiadochennyi","title":"\u0423\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439","text":"

\u0421\u043f\u0438\u0441\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u044f\u0432\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.

1. Lorem ipsum dolor sit amet\n2. Consectetur adipiscing elit\n3. Integer molestie lorem at massa\n4. Facilisis in pretium nisl aliquet\n5. Nulla volutpat aliquam velit\n6. Faucibus porta lacus fringilla vel\n7. Aenean sit amet erat nunc\n8. Eget porttitor lorem\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

  1. Lorem ipsum dolor sit amet
  2. Consectetur adipiscing elit
  3. Integer molestie lorem at massa
  4. Facilisis in pretium nisl aliquet
  5. Nulla volutpat aliquam velit
  6. Faucibus porta lacus fringilla vel
  7. Aenean sit amet erat nunc
  8. Eget porttitor lorem

\u0418 \u0442\u0430\u043a\u043e\u0439 HTML:

<ol>\n  <li>Lorem ipsum dolor sit amet</li>\n  <li>Consectetur adipiscing elit</li>\n  <li>Integer molestie lorem at massa</li>\n  <li>Facilisis in pretium nisl aliquet</li>\n  <li>Nulla volutpat aliquam velit</li>\n  <li>Faucibus porta lacus fringilla vel</li>\n  <li>Aenean sit amet erat nunc</li>\n  <li>Eget porttitor lorem</li>\n</ol>\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 1. \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u0441\u043f\u0438\u0441\u043a\u0430, Markdown \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

1. Lorem ipsum dolor sit amet\n1. Consectetur adipiscing elit\n1. Integer molestie lorem at massa\n1. Facilisis in pretium nisl aliquet\n1. Nulla volutpat aliquam velit\n1. Faucibus porta lacus fringilla vel\n1. Aenean sit amet erat nunc\n1. Eget porttitor lorem\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

  1. Lorem ipsum dolor sit amet
  2. Consectetur adipiscing elit
  3. Integer molestie lorem at massa
  4. Facilisis in pretium nisl aliquet
  5. Nulla volutpat aliquam velit
  6. Faucibus porta lacus fringilla vel
  7. Aenean sit amet erat nunc
  8. Eget porttitor lorem
"},{"location":"content/markdown/#kod","title":"\u041a\u043e\u0434","text":""},{"location":"content/markdown/#vstroennyi-kod","title":"\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434","text":"

\u041e\u0431\u0435\u0440\u043d\u0438\u0442\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0432 `.

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u043b\u043e\u043a `<section> </section>` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d \u0432 **\u043a\u043e\u0434**.\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u043b\u043e\u043a <section> </section> \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u043a\u043e\u0434.

HTML:

<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u043b\u043e\u043a <code>&lt;section&gt;&lt;/section&gt;</code> \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d \u0432 <strong>code</strong>.</p>\n
"},{"location":"content/markdown/#kod-s-otstupom","title":"\u041a\u043e\u0434 \u0441 \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u043c","text":"

\u0418\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043e\u0442\u0441\u0442\u0443\u043f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043a\u043e\u0434\u0430 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

```\n  // \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439\n  line 1 of code\n  line 2 of code\n  line 3 of code\n```\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

// \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439\nline 1 of code\nline 2 of code\nline 3 of code\n

HTML:

<pre>\n  <code>\n    // \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439\n    line 1 of code\n    line 2 of code\n    line 3 of code\n  </code>\n</pre>\n
"},{"location":"content/markdown/#blok-koda-s-zaborchikami","title":"\u0411\u043b\u043e\u043a \u043a\u043e\u0434\u0430 \u0441 \u00ab\u0437\u0430\u0431\u043e\u0440\u0447\u0438\u043a\u0430\u043c\u0438\u00bb","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u0440\u043e\u0439\u043d\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 ```, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0442\u0435\u043a\u0441\u0442 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043a\u043e\u0434\u0430 \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c \u044f\u0437\u044b\u043a\u0430

```\n\u041e\u0431\u0440\u0430\u0437\u0435\u0446 \u0442\u0435\u043a\u0441\u0442\u0430...\n```\n

HTML:

<pre language-html>\n  <code>\u041e\u0431\u0440\u0430\u0437\u0435\u0446 \u0442\u0435\u043a\u0441\u0442\u0430...</code>\n</pre>\n
"},{"location":"content/markdown/#podsvetka-sintaksisa","title":"\u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430","text":"

GFM \u0438\u043b\u0438 \u00abGitHub Flavored Markdown\u00bb \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430. \u0427\u0442\u043e\u0431\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0441 \u0442\u0440\u043e\u0439\u043d\u044b\u043c\u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438, ```js, \u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c HTML. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u043a \u043a\u043e\u0434\u0443 JavaScript:

```js\ngrunt.initConfig({\n  assemble: {\n    options: {\n      assets: 'docs/assets',\n      data: 'src/data/*.{json,yml}',\n      helpers: 'src/custom-helpers.js',\n      partials: ['src/partials/**/*.{hbs,md}']\n    },\n    pages: {\n      options: {\n        layout: 'default.hbs'\n      },\n      files: {\n        './': ['src/templates/pages/index.hbs']\n      }\n    }\n  }\n};\n```\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

grunt.initConfig({\n  assemble: {\n    options: {\n      assets: 'docs/assets',\n      data: 'src/data/*.{json,yml}',\n      helpers: 'src/custom-helpers.js',\n      partials: ['src/partials/**/*.{hbs,md}']\n    },\n    pages: {\n      options: {\n        layout: 'default.hbs'\n      },\n      files: {\n        './': ['src/templates/pages/index.hbs']\n      }\n    }\n  }\n};\n

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430, \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d Highlight. \u041e\u043d, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d jquery, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 jquery \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u0430\u0448\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435.

"},{"location":"content/markdown/#tablitsy","title":"\u0422\u0430\u0431\u043b\u0438\u0446\u044b","text":"

\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0447\u0435\u0440\u0442\u043e\u0447\u0435\u043a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u043e\u0439 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0438\u0439 \u0442\u0438\u0440\u0435 (\u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u043e\u0441\u0430\u043c\u0438) \u043f\u043e\u0434 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0435\u0440\u0442\u043e\u0447\u043a\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438.

| \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 |\n| ------ | ----------- |\n| data   | \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b. |\n| engine | \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. Handlebars \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. |\n| ext    | \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. |\n

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432:

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 data \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b. engine \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. Handlebars \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. ext \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.

\u0418 \u0442\u0430\u043a\u043e\u0439 HTML:

<table>\n  <thead>\n    <tr>\n      <th>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440</th>\n      <th>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>data</td>\n      <td>\u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b.</td>\n    </tr>\n    <tr>\n      <td>engine</td>\n      <td>\u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. Handlebars \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.</td>\n    </tr>\n    <tr>\n      <td>ext</td>\n      <td>\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.</td>\n    </tr>\n  </tbody>\n</table>\n
"},{"location":"content/markdown/#tekst-s-vyravnivaniem-po-pravomu-kraiu","title":"\u0422\u0435\u043a\u0441\u0442 \u0441 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","text":"

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u0442\u0438\u0440\u0435 \u043f\u043e\u0434 \u043b\u044e\u0431\u044b\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u043f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e.

| \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 |\n| ------:| -----------:|\n| data   | \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b. |\n| engine | \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. Handlebars \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. |\n| ext    | \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. |\n
\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 data \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b. engine \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. Handlebars \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. ext \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f."},{"location":"content/markdown/#ssylki","title":"\u0421\u0441\u044b\u043b\u043a\u0438","text":""},{"location":"content/markdown/#obychnaia-ssylka","title":"\u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430","text":"
[Assemble](https://assemble.io)\n

\u0420\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u0441\u044f \u0442\u0430\u043a:

Assemble

HTML:

<a href=\"https://assemble.io\">Assemble</a>\n
"},{"location":"content/markdown/#dobavlenie-podskazki-pri-navedenii","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438","text":"
[Upstage](https://github.com/upstage/ \"Visit Upstage!\")\n

\u041d\u0430\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0443, \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430:

Upstage

HTML:

<a href=\"https://github.com/upstage/\" title=\"Visit Upstage!\">Upstage</a>\n
"},{"location":"content/markdown/#imenovannye-iakoria","title":"\u0418\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u044f\u043a\u043e\u0440\u044f","text":"

\u0418\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u044d\u0442\u0438\u0445 \u0433\u043b\u0430\u0432:

# Table of Contents\n  * [Chapter 1](#chapter-1)\n  * [Chapter 2](#chapter-2)\n  * [Chapter 3](#chapter-3)\n

\u0432\u0435\u0434\u0451\u0442 \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435:

## Chapter 1 <a id=\"chapter-1\"></a>\nContent for chapter one.\n\n## Chapter 2 <a id=\"chapter-2\"></a>\nContent for chapter one.\n\n## Chapter 3 <a id=\"chapter-3\"></a>\nContent for chapter one.\n

\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0442\u0435\u0433\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c. \u041e\u043d\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u043d\u0430\u0432\u044f\u0437\u0447\u0438\u0432\u044b\u043c, \u0438 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.

"},{"location":"content/markdown/#izobrazheniia","title":"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","text":"

\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u044e\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0441\u0441\u044b\u043b\u043a\u0430\u043c, \u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u043e\u0441\u043a\u043b\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a.

![Minion](https://octodex.github.com/images/minion.png)\n

\u0438\u043b\u0438:

![Alt text](https://octodex.github.com/images/stormtroopocat.jpg \"The Stormtroopocat\")\n

\u041a\u0430\u043a \u0438 \u0441\u0441\u044b\u043b\u043a\u0438, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0441\u0442\u0438\u043b\u044f \u0441\u043d\u043e\u0441\u043e\u043a:

![Alt text][id]\n

\u0421\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043f\u043e\u0437\u0436\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 URL:

[id]: https://octodex.github.com/images/dojocat.jpg  \"The Dojocat\"\n
"},{"location":"content/media/","title":"\u041c\u0435\u0434\u0438\u0430","text":""},{"location":"content/media/#media","title":"\u041c\u0435\u0434\u0438\u0430","text":"

\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 Grav \u0432\u0430\u043c \u0447\u0430\u0441\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432\u0438\u0434\u0435\u043e \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0430\u0439\u043b\u044b. \u042d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f Grav, \u0438 \u043e\u043d\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0437\u0430\u0442\u0435\u043c, \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440, \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e \u0438 \u0442. \u0434.).

Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0432 \u043a\u044d\u0448\u0435 \u043a\u043e\u043f\u0438\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0437\u0430\u043d\u043e\u0432\u043e.

"},{"location":"content/media/#podderzhivaemye-mediafaily","title":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b","text":"

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0442\u0438\u043f\u044b \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f Grav. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u044b.

\u0422\u0438\u043f \u043c\u0435\u0434\u0438\u0430 \u0422\u0438\u043f \u0444\u0430\u0439\u043b\u0430 \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f jpg, jpeg, png \u0410\u0443\u0434\u0438\u043e mp3, wav, wma, ogg, m4a, aiff, aif \u0410\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f gif \u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f svg \u0412\u0438\u0434\u0435\u043e mp4, mov, m4v, swf, flv, webm, ogv \u0414\u0430\u043d\u043d\u044b\u0435 / \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f txt, doc, docx, html, htm, pdf, zip, gz, 7z, tar, css, js, json, xml, xls, xlt, xlm, xlsm, xld, xla, xlc, xlw, xll, ppt, pps, rtf, bmp, tiff, mpeg, mpg, mpe, avi, wmv

\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 MimeType \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 system/config/media.yaml. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0442\u0438\u043f mime, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 user/config/media.yaml \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0442\u0443\u0434\u0430. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0442\u043e\u0442 \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442, \u0447\u0442\u043e \u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0444\u0430\u0439\u043b system. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u2014 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438 \u0432\u043d\u0435\u0441\u0442\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.

"},{"location":"content/media/#mestoraspolozhenie-mediafailov","title":"\u041c\u0435\u0441\u0442\u043e\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u043e\u0432","text":"

\u041e\u0431\u044b\u0447\u043d\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

![my image](image.jpg)\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043e\u0434\u043d\u0443 \u043f\u0430\u043f\u043a\u0443, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u0445 \u0432 \u043f\u0430\u043f\u043a\u0443 user/pages/images. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 Twig \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438 \u0447\u0435\u0440\u0435\u0437:

{% set my_image = page.find('/images').media['my-image.jpg'] %}\n

\u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Markdown \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441 \u043d\u0438\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438:

![my image](/images/my-image.jpg?cropResize=300,300)\n

\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u0445 \u0432 \u0441\u0432\u043e\u044e \u0442\u0435\u043c\u0443, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0441\u044b\u043b\u043a\u0438 CSS \u0438\u043b\u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0442\u043e\u043a\u0430 theme://:

![my image](theme://images/theme-image.jpg)\n

\u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 - user/images, \u0433\u0434\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a image:// \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0438\u043c:

![my image](image://my-image.jpg)\n

\u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u0442\u043e\u043a, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043b\u044e\u0431\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 user/ \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0442\u043e\u043a user://:

![my image](user://themes/mytheme/images/my-image.jpg)\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Twig Media:

{{ media['user://themes/mytheme/images/my-image.jpg'].html()|raw }}\n

\u0412 Grav \u0435\u0441\u0442\u044c \u043f\u0430\u043f\u043a\u0430 /images. \u041d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u0439\u0442\u0435 \u0432 \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u043d\u0435\u0439 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 Grav \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 MP3-\u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 user/pages/mp3s (\u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f) \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u043c\u044f MP3-\u0444\u0430\u0439\u043b\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u0432 \u043f\u043e\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0435 thistrack. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u0443 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0443\u0434\u0438\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 HTML5, \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:

<audio controls>\n  <source src=\"{{ page.find('/mp3s').media[page.header.thistrack~'.mp3']|e }}\">\n</audio>\n
"},{"location":"content/media/#rezhimy-otobrazheniia","title":"\u0420\u0435\u0436\u0438\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","text":"

Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043c\u0435\u0434\u0438\u0430-\u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u0420\u0435\u0436\u0438\u043c \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 source \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432\u0438\u0434\u0435\u043e \u0438\u043b\u0438 \u0444\u0430\u0439\u043b\u0430 text \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430 thumbnail \u041c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430-\u043e\u0431\u044a\u0435\u043a\u0442\u0430

\u041d\u043e\u0441\u0438\u0442\u0435\u043b\u0438 \u0442\u0438\u043f\u0430 Data/Information \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0440\u0435\u0436\u0438\u043c \u00ab\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u00bb, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c text, \u0435\u0441\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0436\u0438\u043c \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d \u044f\u0432\u043d\u043e.

"},{"location":"content/media/#raspolozhenie-eskiza","title":"\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u0441\u043a\u0438\u0437\u0430","text":"

Grav \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u044d\u0441\u043a\u0438\u0437\u044b \u0432 \u0442\u0440\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445.

  1. \u0412 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435, \u0447\u0442\u043e \u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0439 \u0444\u0430\u0439\u043b: [media-name].[media-extension].thumb.[thumb-extension] \u0433\u0434\u0435 media-name \u0438 media-extension - \u044d\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u043c\u044f \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430, \u0430 thumb-extension - \u044d\u0442\u043e \u043b\u044e\u0431\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0442\u0438\u043f\u043e\u043c \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430 image. \u041f\u0440\u0438\u043c\u0435\u0440\u044b: my_video.mp4.thumb.jpg \u0438 my-image.jpg.thumb.png. \u0422\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439! \u0421\u0430\u043c\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0441\u043a\u0438\u0437\u0430.
  2. \u0412\u0430\u0448\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043f\u0430\u043f\u043a\u0430: user/images/media/thumb-[media-extension].png, \u0433\u0434\u0435 media-extension - \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430. \u041f\u0440\u0438\u043c\u0435\u0440\u044b: thumb-mp4.png \u0438 thumb-jpg.jpg.
  3. \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430: system/images/media/thumb-[media-extension].png, \u0433\u0434\u0435 media-extension - \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430. \u042d\u0441\u043a\u0438\u0437\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043f\u0430\u043f\u043a\u0430\u0445 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b Grav \u0437\u0430\u0440\u0430\u043d\u0435\u0435.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u044d\u0441\u043a\u0438\u0437 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0438\u0436\u0435.

"},{"location":"content/media/#ssylki-i-laitboksy","title":"\u0421\u0441\u044b\u043b\u043a\u0438 \u0438 \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u044b","text":"

\u0412\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u0438 \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u044b \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u043e\u0437\u0436\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

Grav \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u043e\u0432 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d FeatherLight.

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Grav \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430, \u0432\u0441\u0451, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 Grav, \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0442\u0435\u0433 \u044f\u043a\u043e\u0440\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u044b \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0442 \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0438\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u0443\u044e \u043d\u0438\u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u043f\u0440\u0430\u0432\u043a\u0438.

\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 rel \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, \u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 lightbox. href URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430\u043e\u0431\u044a\u0435\u043a\u0442\u0430. data-width \u0428\u0438\u0440\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430. data-height \u0412\u044b\u0441\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430. data-srcset \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439 \u044d\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 srcset. (\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f)"},{"location":"content/media/#obshchie-deistviia","title":"\u041e\u0431\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f","text":"

Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u0435\u0434\u0438\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043c\u0435\u0434\u0438\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u0441\u0440\u0435\u0434\u044b, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b.

\u042d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0438\u043f\u043e\u0432 \u043c\u0435\u0434\u0438\u0430.

"},{"location":"content/media/#url","title":"url","text":"

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Twig, \u043e\u0442\u0441\u044e\u0434\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 Markdown.

\u042d\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 URL-\u043f\u0443\u0442\u044c \u043a \u043c\u0435\u0434\u0438\u0430.

TwigHTML
{{ page.media['sample-image.jpg'].url|e }}\n
/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg\n
"},{"location":"content/media/#html","title":"html","text":"

\u0412 Markdown \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043d\u0435\u044f\u0432\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 ![].

\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 html \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 HTML-\u0442\u0435\u0433 \u0434\u043b\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.

MarkdownTwigHTML
![Some ALT text](sample-image.jpg?classes=myclass \"My title\")\n
{{ page.media['sample-image.jpg'].html('My title', 'Some ALT text', 'myclass')|raw }}\n
<img title=\"My title\" alt=\"Some ALT text\" class=\"myclass\" src=\"/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg\" />\n
"},{"location":"content/media/#display","title":"display","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Grav. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0441\u0431\u0440\u043e\u0448\u0435\u043d\u044b. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f lightbox \u0438 link, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043b\u044e\u0431\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0441\u043a\u0438\u0437, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 page.media['sample-image.jpg'].sepia().display('thumbnail').html(), \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f sepia(), \u043d\u043e page.media['sample-image.jpg'].display('thumbnail').sepia().html() \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 sepia().

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u0432 \u0440\u0435\u0436\u0438\u043c \u044d\u0441\u043a\u0438\u0437\u043e\u0432, \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0435\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0435.

"},{"location":"content/media/#link","title":"link","text":"

\u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u043c\u0435\u0434\u0438\u0430-\u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u0441\u0441\u044b\u043b\u043a\u0443. \u0412\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0434\u043e link(), \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u043a \u0446\u0435\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0438, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043b\u044e\u0431\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043e\u0441\u043b\u0435, \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 link(), Grav \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442 \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 thumbnail.

\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 (display('text')) \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044e \u0444\u0430\u0439\u043b\u0430 sample-image.jpg \u0441\u0435\u043f\u0438\u0438:

MarkdownTwigHTML
![Image link](sample-image.jpg?sepia&link&display=text)\n
{{ page.media['sample-image.jpg'].sepia().link().display('text').html('Image link')|raw }}\n
<a href=\"/images/3/7/7/1/c/3771c3fabb6d7bc0035dd119281718f9143c4653-sample-image.jpg\"><img title=\"Image link\" alt=\"\" src=\"/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg\" /></a>\n
"},{"location":"content/media/#tolko-cache","title":"\u0422\u043e\u043b\u044c\u043a\u043e Cache","text":"

Grav \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 Grav, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u043c\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043e Grav. \u041c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438.

\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 cache_all \u0432 system/config/system.yaml

images:\n  default_image_quality: 85\n  cache_all: false\n

\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u044e \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 cache.

MarkdownTwigHTML
![](sample-image.jpg?cache)\n
{{ page.media['sample-image.jpg'].cache.html()|raw }}\n
<img alt=\"\" src=\"/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg\" />\n
"},{"location":"content/media/#lightbox","title":"lightbox","text":"

\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430 \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u0430\u043a\u043e\u0435 \u0436\u0435, \u043a\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u043d\u043e \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438. \u041a\u0430\u043a \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435 (\u0421\u0441\u044b\u043b\u043a\u0438 \u0438 \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u044b), \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043b\u0430\u0439\u0442\u0431\u043e\u043a\u0441\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438. \u041e\u043d \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 rel=\"lightbox\" \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b width \u0438 height.

\u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e (\u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439), Grav \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u0430\u0448\u0435\u0433\u043e \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0434\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b \u0438 \u0432\u044b\u0441\u043e\u0442\u044b. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u043a \u0441\u0441\u044b\u043b\u043a\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b data-width \u0438 data-height.

MarkdownTwigHTML
![Sample Image](sample-image.jpg?lightbox=600,400&resize=200,200)\n
{{ page.media['sample-image.jpg'].lightbox(600,400).resize(200,200).html('Sample Image')|raw }}\n
<a rel=\"lightbox\" data-width=\"600\" data-height=\"400\" href=\"/images/b/5/e/b/3/b5eb31744b96349b1a711697692b897624202cb1-sample-image.jpg\"><img title=\"Sample Image\" alt=\"\" src=\"/images/4/5/5/e/4/455e41587c2cd25f34cfdccd8ab5078707aabe6b-sample-image.jpg\" /></a>\n
"},{"location":"content/media/#rezultat","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#thumbnail","title":"thumbnail","text":"

\u0412\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Grav. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 page \u0438 default \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043c\u0435\u0434\u0438\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 media \u0434\u043b\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0434\u0438\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c \u043c\u0435\u0434\u0438\u0430\u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u044b.

MarkdownTwigHTML
![Sample Image](sample-image.jpg?thumbnail=default&display=thumbnail)\n
{{ page.media['sample-image.jpg'].thumbnail('default').display('thumbnail').html('Sample Image')|raw }}\n
<img title=\"Sample Image\" alt=\"\" src=\"/system/images/media/thumb-jpg.png\" />\n
"},{"location":"content/media/#rezultat_1","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#attribute","title":"attribute","text":"

\u042d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 HTML \u043a \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c.

MarkdownTwigHTML
![Sample Image](sample-image.jpg?attribute=myattribute,myvalue)\n
{{ page.media['sample-image.jpg'].attribute('myattribute', 'myvalue').html('Sample Image')|raw }}\n
<img myattribute=\"myvalue\" title=\"Sample Image\" alt=\"\" src=\"/images/a/f/2/8/f/af28f2ad724f1e05248ac8dd518b2a5789c6cd41-sample-image.jpg\" />\n
"},{"location":"content/media/#decoding","title":"decoding","text":"

\u0410\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044f \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0430\u0442\u044c \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: auto (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e), sync, async. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 system.images.defaults.decoding \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f md \u0441 ?decoding=async \u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 auto, \u0430\u0442\u0440\u0438\u0431\u0443\u0442 decoding \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442, \u043a\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.

MarkdownTwigHTML
![Sample Image](sample-image.jpg?decoding=async)\n
{# \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432 'config.system.images.defaults.decoding' #}\n{{ page.media['sample-image.jpg'].decoding('async').html('Sample Image')|raw }}\n
<img decoding=\"async\" title=\"Sample Image\" alt=\"\" src=\"/images/e/f/1/0/5/ef10554cd3a99f2e65136e79dce170d4f8a7a1b9-sample-image.jpg\" />\n
"},{"location":"content/media/#deistviia-s-izobrazheniiami","title":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438","text":""},{"location":"content/media/#resize","title":"resize","text":"

\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0435. resize \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u00ab\u0448\u0438\u0440\u0438\u043d\u044b\u00bb \u0438 \u00ab\u0432\u044b\u0441\u043e\u0442\u044b\u00bb. \u0421\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f, \u0438 \u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430 \u0444\u043e\u043d\u0430, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u043a \u00ab\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 0xffffff. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0444\u043e\u043d\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0438, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0435, \u0435\u0441\u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PNG, \u0438\u043b\u0438 \u0431\u0435\u043b\u043e\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JPEG.

MarkdownTwig
![Sample Image](sample-image.jpg?resize=400,200)\n
{{ page.media['sample-image.jpg'].resize(400, 200).html()|raw }}\n
"},{"location":"content/media/#rezultat_2","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#forceresize","title":"forceResize","text":"

\u0418\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0448\u0438\u0440\u0438\u043d\u0443 \u0438 \u0432\u044b\u0441\u043e\u0442\u0443, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e. forceResize \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d \u0438 \u0440\u0430\u0441\u0442\u044f\u043d\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u043e \u043d\u043e\u0432\u043e\u043c\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.

MarkdownTwig
![Sample Image](sample-image.jpg?forceResize=200,300)\n
{{ page.media['sample-image.jpg'].forceResize(200, 300).html()|raw }}\n
"},{"location":"content/media/#rezultat_3","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#cropresize","title":"cropResize","text":"

cropResize \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0448\u0438\u0440\u0438\u043d\u044b \u0438 \u0432\u044b\u0441\u043e\u0442\u044b. \u0421\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f, \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0439 \u0440\u0430\u043c\u043a\u0435, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 width \u0438 height. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043b\u044e\u0431\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0444\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043f\u0440\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 640 x 480 \u0438 \u0432\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0435 \u043d\u0430\u0434 \u043d\u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 cropResize(100, 100), \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 100 x75.

MarkdownTwig
![Sample Image](sample-image.jpg?cropResize=300,300)\n
{{ page.media['sample-image.jpg'].cropResize(300, 300).html()|raw }}\n
"},{"location":"content/media/#rezultat_4","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#crop","title":"crop","text":"

crop \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u043e\u043e\u0431\u0449\u0435, \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0435\u0436\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 width \u0438 height, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u0430 \u0438\u0437 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 x \u0438 y \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 640 x 480 \u0441 crop(0, 0, 400, 100) \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 400 \u0438 \u0432\u044b\u0441\u043e\u0442\u043e\u0439 100, \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0438\u0437 \u043b\u0435\u0432\u043e\u0433\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0433\u043b\u0430 (0, 0).

MarkdownTwig
![Sample Image](sample-image.jpg?crop=100,100,300,200)\n
{{ page.media['sample-image.jpg'].crop(100,100,300,200).html()|raw }}\n
"},{"location":"content/media/#rezultat_5","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#cropzoom","title":"cropZoom","text":"

\u041f\u043e\u0434\u043e\u0431\u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 cropResize, cropZoom \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f width \u0438 height, \u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b\u0438. \u0421\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f, \u043d\u043e \u0447\u0430\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u044b, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e.

\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 cropResize \u0438 cropZoom \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 cropResize \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u0440\u043e\u043d, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0430 \u043b\u044e\u0431\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0444\u043e\u043d\u043e\u043c.

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 cropZoom \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e \u0444\u043e\u043d \u043d\u0435 \u0432\u0438\u0434\u0435\u043d, \u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 640 x480 \u0438 \u0432\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 cropZoom(400, 100), \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e \u0434\u043e 400 x 300, \u0430 \u0437\u0430\u0442\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0430 \u0432\u044b\u0441\u043e\u0442\u0430. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 400 x 100.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=600,200)\n
{{ page.media['sample-image.jpg'].cropZoom(600,200).html()|raw }}\n

\u041b\u044e\u0434\u0438, \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c zoomCrop \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0430\u0442, \u0447\u0442\u043e \u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Grav.

"},{"location":"content/media/#rezultat_6","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#quality","title":"quality","text":"

\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430 \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442 0 \u0434\u043e 100. \u041c\u0435\u043d\u044c\u0448\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u0433\u0434\u0435 100 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&quality=25)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).quality(25).html()|raw }}\n
"},{"location":"content/media/#rezultat_7","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#negate","title":"negate","text":"

\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0441 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&negate)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).negate.html()|raw }}\n
"},{"location":"content/media/#rezultat_8","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#brightness","title":"brightness","text":"

\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0442 -255 \u0434\u043e +255. \u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u043d\u0435\u0435, \u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u044f\u0440\u0447\u0435.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&brightness=-100)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).brightness(-100).html()|raw }}\n
"},{"location":"content/media/#rezultat_9","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#contrast","title":"contrast","text":"

\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u0430 \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0442 -100 \u0434\u043e +100. \u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442, \u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0442 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&contrast=-50)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).contrast(-50).html()|raw }}\n
"},{"location":"content/media/#rezultat_10","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#grayscale","title":"grayscale","text":"

\u042d\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043e\u0442\u0442\u0435\u043d\u043a\u043e\u0432 \u0441\u0435\u0440\u043e\u0433\u043e.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&grayscale)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).grayscale.html()|raw }}\n
"},{"location":"content/media/#rezultat_11","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#emboss","title":"emboss","text":"

\u042d\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0442\u0438\u0441\u043d\u0435\u043d\u0438\u044f.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&emboss)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).emboss.html()|raw }}\n
"},{"location":"content/media/#rezultat_12","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#smooth","title":"smooth","text":"

\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f value \u043e\u0442 -10 \u0434\u043e 10.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&smooth=5)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).smooth(5).html()|raw }}\n
"},{"location":"content/media/#rezultat_13","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#sharp","title":"sharp","text":"

\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u043a\u043e\u0441\u0442\u0438 \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&sharp)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).sharp.html()|raw }}\n
"},{"location":"content/media/#rezultat_14","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#edge","title":"edge","text":"

\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043a\u0440\u0430\u0435\u0432 \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&edge)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).edge.html()|raw }}\n
"},{"location":"content/media/#rezultat_15","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#colorize","title":"colorize","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 red, green \u0438 blue \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442 -255 \u0434\u043e +255 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&colorize=100,-100,40)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).colorize(100,-100,40).html()|raw }}\n
"},{"location":"content/media/#rezultat_16","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#sepia","title":"sepia","text":"

\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 \u0441\u0435\u043f\u0438\u0438 \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0438\u043d\u0442\u0430\u0436\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&sepia)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).sepia.html()|raw }}\n
"},{"location":"content/media/#rezultat_17","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#gaussianblur","title":"gaussianBlur","text":"

\u0420\u0430\u0437\u043c\u044b\u0432\u0430\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u043a\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0444\u0438\u043b\u044c\u0442\u0440 \u0440\u0430\u0437\u043c\u044b\u0442\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 1 \u0440\u0430\u0437.

MarkdownTwig
![Sample Image](sample-image.jpg?gaussianBlur=3)\n
{{ page.media['sample-image.jpg'].gaussianBlur(3).html()|raw }}\n
"},{"location":"content/media/#rezultat_18","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#rotate","title":"rotate","text":"

\u041f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0443\u0433\u043e\u043b \u043f\u0440\u043e\u0442\u0438\u0432 \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438, \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0435.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&rotate=-90)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).rotate(-90).html()|raw }}\n
"},{"location":"content/media/#rezultat_19","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#flip","title":"flip","text":"

\u041f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041e\u0431\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0|1. \u041e\u0431\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438.

MarkdownTwig
![Sample Image](sample-image.jpg?cropZoom=300,200&flip=0,1)\n
{{ page.media['sample-image.jpg'].cropZoom(300,200).flip(0,1).html()|raw }}\n
"},{"location":"content/media/#rezultat_20","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#fixorientation","title":"fixOrientation","text":"

\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 \u0434\u0430\u043d\u043d\u044b\u0435 EXIF \u200b\u200b(\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c jpeg, \u0441\u043d\u044f\u0442\u044b\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0438 \u043a\u0430\u043c\u0435\u0440).

MarkdownTwig
![Sample Image](sample-image.jpg?fixOrientation)\n
{{ page.media['sample-image.jpg'].fixOrientation().html()|raw }}\n
"},{"location":"content/media/#loading","title":"loading","text":"

\u0410\u0442\u0440\u0438\u0431\u0443\u0442 loading \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0434\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0442\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0430. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 auto (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e), lazy, eager. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 system.images.defaults.load \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435 Markdown \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 ?loading=lazy \u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 auto, \u0430\u0442\u0440\u0438\u0431\u0443\u0442 loading \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442, \u043a\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.

MarkdownTwigHTML
![Sample Image](sample-image.jpg?loading=lazy)\n
{# \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432 'config.system.images.defaults.loading' #}\n{{ page.media['sample-image.jpg'].loading.html('Sample Image')|raw }}\n\n{# \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044f\u0432\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f #}\n{{ page.media['sample-image.jpg'].loading('lazy').html('Sample Image')|raw }}\n
<img loading=\"lazy\" title=\"Sample Image\"  src=\"/images/e/f/1/0/5/ef10554cd3a99f2e65136e79dce170d4f8a7a1b9-sample-image.jpg\" />\n
"},{"location":"content/media/#deistviia-s-obektami","title":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438","text":""},{"location":"content/media/#resize_1","title":"resize","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 PHP \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u044d\u0442\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 resize \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442 width \u0438 height \u0438\u043b\u0438 data-width \u0438 data-height \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432 \u0432\u0430\u0448\u0435\u043c \u0442\u0435\u0433\u0435 <img>/<video> \u0438\u043b\u0438 <a> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435, \u043d\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u043a\u0438\u043c-\u043b\u0438\u0431\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c.

MarkdownTwigHTML
![Sample Trailer](sample-trailer.mov?resize=400,200)\n
{{ page.media['sample-trailer.mov'].resize(400, 200).html('Sample Trailer') }}\n
<video controls=\"1\" style=\"width: 400px;height: 200px;\" title=\"Sample Trailer\" alt=\"\"><source src=\"/user/pages/02.content/07.media/sample-trailer.mov?loading=auto\">Your browser does not support the video tag.</video>\n
"},{"location":"content/media/#primery","title":"\u041f\u0440\u0438\u043c\u0435\u0440\u044b","text":"

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u044d\u0442\u043e\u0433\u043e:

\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0410\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0412\u0438\u0434\u0435\u043e
![Sample Vector](sample-vector.svg?resize=300,300)\n

![Animated Gif](sample-animated.gif?resize=300,300)\n

![Sample Trailer](sample-trailer.mov?resize=400,200)\n

Your browser does not support the video tag.

"},{"location":"content/media/#deistviia-s-audio","title":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0430\u0443\u0434\u0438\u043e","text":"

\u0410\u0443\u0434\u0438\u043e \u043c\u0435\u0434\u0438\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0430\u0443\u0434\u0438\u043e \u0441\u0441\u044b\u043b\u043a\u0443 HTML5:

MarkdownTwig
![Hal 9000: I'm Sorry Dave](hal9000.mp3)\n
{{ page.media['hal9000.mp3'].html()|raw }}\n
"},{"location":"content/media/#rezultat_21","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":"

Your browser does not support the audio tag.

"},{"location":"content/media/#controls","title":"controls","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044f\u0432\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f HTML5 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 0 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438 \u0438 \u0442. \u0434.

MarkdownTwigHTML
![Hal 9000: I'm Sorry Dave](hal9000.mp3?controls=0)\n
{{ page.media['hal9000.mp3'].controls(0)|raw }}\n
<audio controls=\"0\" title=\"Hal 9000: I'm Sorry Dave\"><source src=\"pages/02.content/07.media/hal9000.mp3\">Your browser does not support the audio tag.</audio>\n
"},{"location":"content/media/#preload","title":"preload","text":"

\u041e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e auto. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: auto, metadata \u0438 none.

\u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c (\u0442. \u0435. \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e). \u0412 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 metadata.

\u0410\u0442\u0440\u0438\u0431\u0443\u0442 preload \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 autoplay.

MarkdownTwig
![Hal 9000: I'm Sorry Dave](hal9000.mp3?preload=metadata)\n
{{ page.media['hal9000.mp3'].preload('metadata')|raw }}\n
"},{"location":"content/media/#autoplay","title":"autoplay","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0430\u0443\u0434\u0438\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f false.

\u0415\u0441\u043b\u0438 \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 audio \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0438 autoplay, \u0438 preload, preload \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f.

MarkdownTwig
![Hal 9000: I'm Sorry Dave](hal9000.mp3?autoplay=1)\n
{{ page.media['hal9000.mp3'].autoplay(1)|raw }}\n
"},{"location":"content/media/#controlslist","title":"controlsList","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e controlsList, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0442\u0440\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: nodownload, nofullscreen \u0438 noremoteplayback.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432 markdown, \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0439\u0442\u0435 \u0438\u0445 \u0442\u0438\u0440\u0435 (-). \u041e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438 \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u043c HTML.

MarkdownTwig
![Hal 9000: I'm Sorry Dave](hal9000.mp3?controlsList=nodownload-nofullscreen-noremoteplayback)\n
{{ page.media['hal9000.mp3'].controlsList('nodownload nofullscreen noremoteplayback')|raw }}\n
"},{"location":"content/media/#muted","title":"muted","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0437\u0432\u0443\u043a \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f false.

MarkdownTwig
![Hal 9000: I'm Sorry Dave](hal9000.mp3?muted=1)\n
{{ page.media['hal9000.mp3'].muted(1)|raw }}\n
"},{"location":"content/media/#loop","title":"loop","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0437\u0432\u0443\u043a \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f false.

MarkdownTwig
![Hal 9000: I'm Sorry Dave](hal9000.mp3?loop=1)\n
{{ page.media['hal9000.mp3'].loop(1)|raw }}\n
"},{"location":"content/media/#deistviia-s-failami","title":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438","text":"

\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 Grav \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0438 \u043c\u044b \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c. \u0415\u0441\u043b\u0438 \u0432\u044b \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u043c\u0438.

MarkdownTwig
[\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b](acronyms.txt)\n
<a href=\"{{ page.media['acronyms.txt'].url()|raw }}\">\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b</a>\n
"},{"location":"content/media/#rezultat_22","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":"

\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b

"},{"location":"content/media/#kombinatsii","title":"\u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438","text":"

\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435: Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0449\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438! \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0441\u0438\u043b\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0435\u0440\u043d\u043e:

MarkdownTwig
![Sample Image](sample-image.jpg?negate&lightbox&cropZoom=200,200)\n
{{ page.media['sample-image.jpg'].negate.lightbox.cropZoom(200,200)|raw }}\n
"},{"location":"content/media/#rezultat_23","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":""},{"location":"content/media/#sbros-neskolkikh-vyzovov-na-odno-i-to-zhe-izobrazhenie","title":"\u0421\u0431\u0440\u043e\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0435\u0441\u044c \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438 \u0442\u043e\u043c\u0443 \u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0435 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0432\u0435\u0434\u0438\u0442\u0435 HTML-\u043a\u043e\u0434, \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u0435\u0434\u0438\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0412\u044b, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043e\u0436\u0438\u0434\u0430\u043b\u0438 URL-\u0430\u0434\u0440\u0435\u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.

\u0427\u0442\u043e\u0431\u044b \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0432 false \u043c\u0435\u0442\u043e\u0434\u0443 url():

{% for item in page.header.gallery %}\n    {% set image = page.media[item.src].cropZoom(800, 600).quality(70) %}\n    <a href=\"{{ image.url(false) }}\">\n      <img src=\"{{ image.url }}\" alt=\"{{ item.alt }}\" title=\"{{ item.title }}\" />\n    </a>\n{% endfor %}\n
"},{"location":"content/media/#adaptivnye-izobrazheniia","title":"\u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","text":""},{"location":"content/media/#displei-s-bolee-vysokoi-plotnostiu","title":"\u0414\u0438\u0441\u043f\u043b\u0435\u0438 \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c\u044e","text":"

Grav \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u0432 \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u043a\u0440\u0430\u043d\u043e\u0432 Retina). Grav \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 srcset \u0432 HTML \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0425\u043e\u0440\u043e\u0448\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u043e, - \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u043e\u0433\u0435 \u042d\u0440\u0438\u043a\u0430 \u041f\u043e\u0440\u0442\u0438\u0441\u0430.

Grav \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 sizes, \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445 \u0432\u044b\u0448\u0435, \u043d\u0430 \u043f\u043e\u043b\u043d\u0443\u044e \u0448\u0438\u0440\u0438\u043d\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 sizes, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043d\u0438\u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0436\u0435\u043b\u0430\u0435\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440.

\u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c\u044e, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0441\u0443\u0444\u0444\u0438\u043a\u0441 \u043a \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c\u044e, Grav \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u0432\u0430\u0441 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430. \u0418\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: [image-name]@[density-ratio]x.[Image-extension], \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 sample-image@3x.jpg \u043d\u0430 \u0432\u0430\u0448\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e Grav \u0441\u043e\u0437\u0434\u0430\u0441\u0442 2x \u0438 \u0432\u0435\u0440\u0441\u0438\u044e 1x (\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430) \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

\u042d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 Grav, \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \u043a\u044d\u0448\u0430 images/, \u0430 \u043d\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c retina@2x.jpg, \u0432\u044b \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0443\u043a\u0430\u0436\u0435\u0442\u0435 \u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u0438\u0445 \u0441\u0441\u044b\u043b\u043a\u0430\u0445 \u043a\u0430\u043a retina.jpg, \u0438 \u0442\u043e\u0433\u0434\u0430 Grav \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442 \u044d\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430\u0447\u043d\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041e\u043d \u043d\u0430\u0439\u0434\u0435\u0442 retina@2x.jpg, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0439\u043c\u0435\u0442, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 @1x \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 srcset:

MarkdownTwigHTML
![Retina Image](retina.jpg?sizes=80vw)\n
{{ page.media['retina.jpg'].sizes('80vw').html()|raw }}\n
<img alt=\"Retina Image\" src=\"/images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg\" srcset=\"/images/b/a/c/1/9/bac199ed46f9188dafad759760afd27da935e564-retina2x.jpg 2880w, /images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg 1440w\" sizes=\"80vw\">\n
"},{"location":"content/media/#rezultat_24","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":"

\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 srcset, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u044b.

"},{"location":"content/media/#razmery-s-media-zaprosami","title":"\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0441 \u043c\u0435\u0434\u0438\u0430-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438","text":"

Grav \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0434\u0438\u0430-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 sizes, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u0443\u044e \u0448\u0438\u0440\u0438\u043d\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439; \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 - \u044d\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 srcset \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435.

MarkdownTwigHTML
![Retina Image](retina.jpg?sizes=%28max-width%3A26em%29+100vw%2C+50vw)\n
{{ page.media['retina.jpg'].sizes('(max-width:26em) 100vw, 50vw').html('Retina Image')|raw }}\n
<img alt=\"Retina Image\" src=\"/images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg\" srcset=\"/images/b/a/c/1/9/bac199ed46f9188dafad759760afd27da935e564-retina2x.jpg 2880w, /images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg 1440w\" sizes=\"(max-width:26em)+100vw\">\n
"},{"location":"content/media/#rezultat_25","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":"

\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 srcset, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u044b.

"},{"location":"content/media/#razmery-s-media-zaprosami-s-ispolzovaniem-proizvodnykh","title":"\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0441 \u043c\u0435\u0434\u0438\u0430-\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0445","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 derivatives() (\u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435). \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2014 \u044d\u0442\u043e \u0448\u0438\u0440\u0438\u043d\u0430 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0438\u0437 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0412\u0442\u043e\u0440\u043e\u0439 \u2014 \u044d\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u0422\u0440\u0435\u0442\u0438\u0439 \u0438 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e-200). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0440\u0430\u0432\u043d\u044b\u043c 320, \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u2014 100, Grav \u0431\u0443\u0434\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f 320, 420, 520, 620 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0430.

\u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0432 1600. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 300 \u0441 320 \u0434\u043e 1520, \u0442\u0430\u043a \u043a\u0430\u043a 1620 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0448\u0435 \u043f\u043e\u0440\u043e\u0433\u0430.

\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043d \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 markdown, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u0430\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 twig.

MarkdownTwigHTML
![Retina Image](retina.jpg?derivatives=320,1600,300&sizes=%28max-width%3A26em%29+100vw%2C+50vw)\n
{{ page.media['retina.jpg'].derivatives(320,1600,300).sizes('(max-width:26em) 100vw, 50vw').html()|raw }}\n
<img alt=\"Retina Image\" src=\"/images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg\" srcset=\"/images/b/a/c/1/9/bac199ed46f9188dafad759760afd27da935e564-retina2x.jpg 2880w, /images/d/c/e/f/7/dcef77ec0cc8efd0a66851a7750b530d8bfe093a-retina320w.jpg 320w, /images/1/5/d/a/1/15da17d9989ac18738474b1fab5ff6104b96be41-retina620w.jpg 620w, /images/e/c/e/3/f/ece3fa30474b851808a485197b481d202d8f3811-retina920w.jpg 920w, /images/3/8/8/2/4/3882463d358fc22a189380da7b7d14db2a5b260a-retina1220w.jpg 1220w, /images/6/0/5/0/e/6050e7409d6040b3737b6562cdec89854cac3f9a-retina1520w.jpg 1520w, /images/3/7/f/0/c/37f0ca845b3eb054374d6a1ac2e36e13c59e14f8-retina1x.jpg 1440w\" sizes=\"(max-width:26em)+100vw\">\n
"},{"location":"content/media/#rezultat_26","title":"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:","text":"

\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 srcset \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0432\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b. \u041c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 HTML-\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u0432 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0443\u044e \u0432\u043a\u043b\u0430\u0434\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u044d\u043a\u0440\u0430\u043d\u0430\u043c\u0438.

"},{"location":"content/media/#ruchnoe-opredelenie-razmera","title":"\u0420\u0443\u0447\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430","text":"

\u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c Grav \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0432 \u0447\u0435\u0442\u043d\u044b\u0445 \u0448\u0430\u0433\u0430\u0445 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b Grav \u0434\u043e\u043b\u0436\u0435\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c:

![Retina Image](retina.jpg?derivatives=[360,720,1200])\n

\u042d\u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f retina.jpg \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u043e\u0439: 360, 720 \u0438 1200px.

"},{"location":"content/media/#metafaily","title":"\u041c\u0435\u0442\u0430\u0444\u0430\u0439\u043b\u044b","text":"

\u041a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0435\u0441\u044c \u0432 Grav, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 image1.jpg, sample-trailer.mov, \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 archive.zip \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u0430-\u0444\u0430\u0439\u043b\u0430. \u042d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 <filename>.meta.yaml. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430 image1.jpg \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u0444\u0430\u0439\u043b image1.jpg.meta.yaml.

\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u043b\u0438 \u043a\u0443\u0441\u043e\u0447\u0435\u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.

\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 YAML, \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:

image:\n  filters:\n    default:\n      - [cropResize, 300, 300]\n      - sharp\nalt_text: My Alt Text\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0438\u043b\u044f \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043c\u0435\u0442\u0430-\u0442\u0435\u0433\u043e\u0432 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c YAML-\u0444\u0430\u0439\u043b \u0432 \u0442\u0443 \u0436\u0435 \u043f\u0430\u043f\u043a\u0443, \u0447\u0442\u043e \u0438 \u0444\u0430\u0439\u043b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0442\u044f\u043d\u0443\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 YAML. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u0430\u0436\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 alt_text, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f sample-image.jpg. \u0417\u0430\u0442\u0435\u043c \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u0444\u0430\u0439\u043b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c sample-image.jpg.meta.yaml \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0435 \u0435\u0433\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0444\u0430\u0439\u043b\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430. \u0417\u0430\u0442\u0435\u043c \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435, \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 YAML-\u0444\u0430\u0439\u043b. \u0412 \u0444\u0430\u0439\u043b\u0435 Markdown \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:

{{ page.media['sample-image.jpg'].meta.alt_text }}\n

\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0440\u0430\u0437\u044b My Alt Text. \u042d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0440\u044f\u0434\u0430 \u0432\u0435\u0449\u0435\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0433\u0430\u043b\u0435\u0440\u0435\u0438 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0412\u0430\u0448\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e \u0441\u0443\u0442\u0438, \u0438\u043c\u0435\u044e\u0442 \u043d\u0430\u0431\u043e\u0440 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0438 \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.

"},{"location":"content/media/#parametry-video","title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u0438\u0434\u0435\u043e","text":"

\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u2014 \u044d\u0442\u043e \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 Grav. \u042d\u0442\u0438 \u043e\u043f\u0446\u0438\u0438, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430, \u0434\u0430\u044e\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 autoplay, controls \u0438 loop.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440:

![video.mov](video.mov?loop=1&controls=0&autoplay=1&muted)\n

\u041e\u043f\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:

\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 autoplay \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 (1) \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 (0) \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. controls \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 (1) \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 (0) \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e. loop \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 (1) \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 (0) \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0435\u0442\u043b\u0435\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e, \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u044f \u0435\u0433\u043e \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438. muted \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043e \u0438, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u0435\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435."},{"location":"content/modular/","title":"\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":""},{"location":"content/modular/#modulnye-stranitsy","title":"\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0441 \u044d\u0442\u0438\u043c \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u0441\u044c, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u043e\u0431\u043d\u044b \u043e\u043d\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438. \u041c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0443\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u0438\u0440\u043f\u0438\u0447\u0438\u043a\u043e\u0432 LEGO \u2014 \u0438 \u043a\u0442\u043e \u043d\u0435 \u043b\u044e\u0431\u0438\u0442 LEGO?!

"},{"location":"content/modular/#chto-takoe-modulnye-stranitsy-i-chem-oni-ne-iavliaiutsia","title":"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f?","text":"

\u0412 Grav \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u2014 \u044d\u0442\u043e \u0448\u0438\u0440\u043e\u043a\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f, \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0435\u0431\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0438 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430. \u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u2014 \u044d\u0442\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438, \u043d\u043e \u043d\u0435 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0439 \u0432 \u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u0447\u0442\u043e Grav \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0435\u0451 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u0430\u043a \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0432 \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 domain.com/books \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043d\u0438\u0433\u0438 \u043f\u0440\u043e\u0434\u0430\u044e\u0442\u0441\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 domain.com/books/gullivers-travels \u0438 domain.com/books/the-hobbit. \u0418\u0445 \u043f\u0430\u043f\u043a\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u044b \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 Grav: /pages/books, /pages/books/gullivers-travels \u0438 /pages/books/the-hobbit. \u042d\u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0441\u043c\u044b\u0441\u043b\u0435, \u0441\u043a\u043e\u0440\u0435\u0435 \u0443 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043d\u0438\u0433, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u00ab\u041f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u0413\u0443\u043b\u043b\u0438\u0432\u0435\u0440\u0430\u00bb \u0438 \u00ab\u0425\u043e\u0431\u0431\u0438\u0442\u00bb \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 domain.com/books \u0441 \u043f\u0443\u0442\u044f\u043c\u0438 /pages/books/_gullivers-travels \u0438 /pages/books/_the-hobbit. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443.

"},{"location":"content/modular/#primer-struktury-papki","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0430\u043f\u043a\u0438","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0430\u0448 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0439 \u043a\u0430\u0440\u043a\u0430\u0441 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043c\u044b \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u043f\u043a\u0430\u0445, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u043a\u0435\u043b\u0435\u0442\u0430 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 01.home. \u0412 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b modular.md, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 Grav, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c. \u0418\u043c\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432\u0430\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c modular.html.twig \u2014 \u0448\u0430\u0431\u043b\u043e\u043d \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u044b \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u042d\u0442\u0438 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0430\u0445, \u0438\u043c\u0435\u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f (_). \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435, \u0432\u044b \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442\u0435 Grav, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u0438, \u0430 \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0430\u043f\u043a\u0438-\u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f _features \u0438\u043b\u0438 _showcase. \u042d\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b \u2014 \u043d\u0430 \u043d\u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0438 \u043e\u043d\u0438 \u043d\u0435 \u0432\u0438\u0434\u043d\u044b \u2014 \u043e\u043d\u0438 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u0435\u043d\u044e.

\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u043a\u0435\u043b\u0435\u0442\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043f\u043e\u043a, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043d\u0438\u0436\u0435.

\u041a\u0430\u0436\u0434\u0430\u044f \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0430\u0439\u043b Markdown, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430.

\u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u0438\u0445 \u043f\u0430\u043f\u043a\u0430\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0444\u0430\u0439\u043b\u044b Markdown, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0442. \u0434., \u0437\u0430\u0442\u0435\u043c \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 Modular. \u042d\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 YAML \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0439 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412 \u0442\u0435\u043c\u0435 \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d modular.html.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0442\u0438\u043f\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 modular.html.twig:

{% for module in page.collection() %}\n    {{ module.content }}\n{% endfor %}\n

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a.

"},{"location":"content/modular/#nastroika-osnovnoi-stranitsy","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a \u043c\u043e\u0434\u0443\u043b\u044f. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 Markdown \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u044f. \u0412\u043e\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 modular.md \u0432 \u043f\u0430\u043f\u043a\u0435 01.home.

---\ntitle: One Page Demo Site\nmenu: Home\nonpage_menu: true\nbody_classes: \"modular header-image fullwidth\"\n\ncontent:\n    items: '@self.modular'\n    order:\n        by: default\n        dir: asc\n        custom:\n            - _showcase\n            - _highlights\n            - _callout\n            - _features\n---\n

\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043d\u0435\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e. \u0412\u0441\u0451 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 YAML FrontMatter \u0432 \u0448\u0430\u043f\u043a\u0435. \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u041c\u0435\u043d\u044e \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 Content \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0440\u0443\u0435\u0442 Grav \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u0445 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430.

"},{"location":"content/modular/#moduli","title":"\u041c\u043e\u0434\u0443\u043b\u0438","text":"

Markdown-\u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u0442. \u0434. \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u0446\u0435\u043b\u0435\u0439 \u0438 \u0437\u0430\u0434\u0430\u0447 \u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043d \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435. \u041c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a taxonomy, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 Markdown, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.

\u0421\u0430\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 text.md \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 _callout, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

---\ntitle: Homepage Callout\nimage_align: right\n---\n\n## Content Unchained\n\n\u0412\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431 \u0441\u0432\u043e\u0435\u0439 CMS. **Grav** \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e: [\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442](#), [\u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0431\u043b\u043e\u0433](#), \u043c\u043e\u0449\u043d\u044b\u0439 \u0438 \u043c\u043d\u043e\u0433\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 [\u0441\u0430\u0439\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430](#) \u0438\u043b\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c!\n

\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u041e\u043d \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0424\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 text.md \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 /templates/modular \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f text.html.twig. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043b\u044e\u0431\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0432 \u0441\u0442\u0438\u043b\u044f\u0445 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c \u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439.

<div class=\"modular-row callout\">\n    {% set image = page.media.images|first %}\n    {% if image %}\n        {{ image.cropResize(400,400).html('','','align-'~page.header.image_align) }}\n    {% endif %}\n{{ content }}\n</div>\n

\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u044b. \u0412\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u044b\u043a\u043d\u0443\u0442\u044c \u043a \u043c\u044b\u0441\u043b\u0438, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u041c\u043e\u0434\u0443\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u043e\u0434 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u0412\u0441\u0435 \u043e\u043d\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u0441\u0440\u0430\u0437\u0443, \u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0430\u0447\u0435, \u0447\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u0437\u043d\u0430\u0439\u0442\u0435, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0432 Grav.

"},{"location":"content/multi-language/","title":"\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c","text":""},{"location":"content/multi-language/#multiiazychnost","title":"\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c","text":"

\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0432 Grav \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 Grav \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445.

"},{"location":"content/multi-language/#odin-iazyk-otlichnyi-ot-angliiskogo","title":"\u041e\u0434\u0438\u043d \u044f\u0437\u044b\u043a, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u0442 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u044f\u0437\u044b\u043a, \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u0434 \u0441\u0432\u043e\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0432 \u0444\u0430\u0439\u043b user/config/system.yaml:

languages:\n  translations: true\n  supported:\n    - ru\n

\u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.

\u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u043b\u0438 \u0442\u0435\u043c\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u043e, \u043e\u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u043a\u043e\u0434 \u0432\u0430\u0448\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0432 \u0442\u0435\u0433 HTML.

"},{"location":"content/multi-language/#osnovy-multiiazychnosti","title":"\u041e\u0441\u043d\u043e\u0432\u044b \u043c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u0438","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0432 \u043f\u0430\u043f\u043a\u0430\u0445 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0430\u0436\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u0438\u0449\u0435\u0442 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b .md \u0432 \u043f\u0430\u043f\u043a\u0435, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 Grav \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u0444\u0430\u0439\u043b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, default.en.md \u0438\u043b\u0438 default.ru.md.

"},{"location":"content/multi-language/#konfiguratsiia-iazykov","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432","text":"

\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u044f\u0437\u044b\u043a\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0435 user/config/system.yaml.

languages:\n  supported:\n    - en\n    - ru\n

\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0441\u0435\u043a\u0446\u0438\u044e languages \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u0432\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0432 Grav.

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0434\u0432\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u0430 (en \u0438 ru). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0438 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a\u0438.

\u0415\u0441\u043b\u0438 \u044f\u0437\u044b\u043a \u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u044f\u0432\u043d\u043e (\u0447\u0435\u0440\u0435\u0437 URL \u0438\u043b\u0438 \u043a\u043e\u0434), Grav \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u044f\u0437\u044b\u043a\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u0418\u0442\u0430\u043a, \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f en \u0438\u043b\u0438 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439. \u0415\u0441\u043b\u0438 \u0431\u044b \u0443 \u0432\u0430\u0441 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b ru, \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u0431\u044b\u043b \u0431\u044b \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0437\u044b\u043a\u043e\u0432, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435, \u0438 \u0432\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0442\u0438\u043f\u0430 en-GB, en-US \u0438 ru-RU. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043b\u043e\u043a\u0430\u043b\u0438, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043a\u043e\u0434\u044b \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438.

"},{"location":"content/multi-language/#mnogoiazychnye-stranitsy","title":"\u041c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 Grav \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u0434\u043d\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, default.md. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, Grav \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0448\u0438\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, Grav \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u0439\u043b default.en.md.

\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d, \u0434\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 default.ru.md. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d, Grav \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u0444\u0430\u0439\u043b default.md \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u042d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0432 Grav 1.7. \u0420\u0430\u043d\u044c\u0448\u0435 Grav \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u044f\u0437\u044b\u043a\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u044f\u0437\u044b\u043a\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0438\u043d\u043e\u0435 \u0432 content_fallback. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u043d\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 404.

\u0415\u0441\u043b\u0438 \u0431\u044b \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0438 \u0441\u0430\u043c\u044b\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 Grav-\u0441\u0430\u0439\u0442\u044b, \u0441 \u043e\u0434\u043d\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c 01.home/default.md, \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f default.md \u0432 default.en.md, \u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:

---\ntitle: Homepage\n---\n\nThis is my Grav-powered homepage!\n

\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435 01.home/ \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c default.ru.md \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:

---\ntitle: \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\n---\n\n\u042d\u0442\u043e \u043c\u043e\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Grav!\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0434\u0432\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445.

\u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0430\u0439\u0442 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c include_default_lang_file_extension: false, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 .md \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u0427\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435...

"},{"location":"content/multi-language/#aktivnyi-iazyk-cherez-url-adres","title":"\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0447\u0435\u0440\u0435\u0437 URL-\u0430\u0434\u0440\u0435\u0441","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u0430, Grav \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043a \u0444\u0430\u0439\u043b\u0443 default.en.md, \u043d\u043e \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u044f\u0432\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439, \u0443\u043a\u0430\u0437\u0430\u0432 \u0432\u0430\u0448\u0435\u043c\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441:

http://yoursite.com/en\n

\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:

http://yoursite.com/ru\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 include_default_lang: false. \u0427\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435...

"},{"location":"content/multi-language/#aktivnyi-iazyk-cherez-brauzer","title":"\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440","text":"

\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. Grav \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 http_accept_language \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c\u0438 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u0441\u0430\u0439\u0442\u0430, \u0438 \u0435\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043d\u0435 \u0431\u044b\u043b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d, \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0434\u043b\u044f \u0432\u0430\u0441 \u044f\u0437\u044b\u043a\u0435.

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u044e \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 user/system.yaml \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 languages::

languages:\n  http_accept_language: false\n
"},{"location":"content/multi-language/#ustanovka-lokali-dlia-aktivnogo-iazyka","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u0438 \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430","text":"

\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0431\u0443\u043b\u0435\u0432\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u043c\u0435\u0442\u043e\u0434 PHP setlocale(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438, \u043a\u0430\u043a \u0434\u0435\u043d\u0435\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0434\u0430\u0442\u044b, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a, \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 false, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 true, \u0442\u043e \u043e\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u043b\u043e\u043a\u0430\u043b\u044c \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c.

languages:\n   override_locale: false\n
"},{"location":"content/multi-language/#prefiks-iazyka-po-umolchaniiu","title":"\u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u044f\u0437\u044b\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432\u0430\u043d \u0432\u043e \u0432\u0441\u0435\u0445 URL. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0438 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u043e\u0432 (en \u0438 ru), \u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439. \u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a /en/my-page \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0438 /ru/ma-page \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u0438\u043c\u0435\u0442\u044c \u044f\u0437\u044b\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0435\u0437 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 false \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a /my-page.

languages:\n    include_default_lang: false\n
"},{"location":"content/multi-language/#multiiazykovaia-marshrutizatsiia","title":"\u041c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f","text":"

Grav \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u0430 \u043f\u0430\u043f\u043e\u043a \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f URL \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0441\u0430\u0439\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0430\u043f\u043e\u043a. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0441\u043c\u044b\u0441\u043b \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435.

\u0415\u0441\u043b\u0438 \u0431\u044b \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a:

- 01.Animals\n  - 01.Mammals\n    - 01.Bats\n    - 02.Bears\n    - 03.Foxes\n    - 04.Cats\n  - 02.Reptiles\n  - 03.Birds\n  - 04.Insets\n  - 05.Aquatic\n

\u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u0442\u0430\u043a\u0438\u0445 URL, \u043a\u0430\u043a http://yoursite.com/animals/mammals/bears. \u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u043c\u0435\u0442\u044c \u0440\u0443\u0441\u0441\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0430\u0433\u0438 \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u044d\u0442\u043e\u0433\u043e \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u043b\u0430\u0433 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b ru.md. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:

---\ntitle: \u041c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0435\nslug: \u043c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0435\n---\n\n\u041c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0435 (\u043a\u043b\u0430\u0441\u0441 Mammalia) - \u044d\u0442\u043e \u0442\u0430\u043a\u0441\u043e\u043d, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u043e\u0442\u0440\u044f\u0434 \u043f\u043e\u0437\u0432\u043e\u043d\u043e\u0447\u043d\u044b\u0445, \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u041b\u0438\u043d\u043d\u0435\u044f. \u042d\u0442\u043e\u0442 \u0442\u0430\u043a\u0441\u043e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u043d\u043e\u0444\u0438\u043b\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c...\n

\u042d\u0442\u043e \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u0441\u043b\u0430\u0433\u0430\u043c\u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a URL http://yoursite.com/animaux/mammiferes/ours, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439!

\u0414\u0440\u0443\u0433\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"content/multi-language/#domashniaia-stranitsa-na-angliiskom-iazyke","title":"\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442/\u0441\u043b\u0430\u0433 \u0434\u043b\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, Grav \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432\u0430\u0448\u0435\u0439 \u043e\u043f\u0446\u0438\u0435\u0439 home.alias \u0432 system.yaml. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c /homepage, \u0430 \u0443 \u0432\u0430\u0448\u0435\u0439 \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442 /\u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430.

\u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 Grav \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u043e\u0432\u0430\u044f \u043e\u043f\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0432\u043c\u0435\u0441\u0442\u043e home.alias \u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435 home.aliases, \u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

home:\n  aliases:\n    en: /homepage\n    ru: /\u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\n

\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, Grav \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0435\u0441\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0438\u043b\u0438 \u0440\u0443\u0441\u0441\u043a\u0438\u0439.

"},{"location":"content/multi-language/#iazykovye-shablony-twig","title":"\u042f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b Twig","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 Markdown \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, default.ru.md \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c Twig-\u0444\u0430\u0439\u043b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c default.html.twig \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0443\u0442\u044f\u0445 \u043a Twig-\u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u044b \u0438 \u043b\u044e\u0431\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043f\u0443\u0442\u0438 \u043a Twig-\u0448\u0430\u0431\u043b\u043e\u043d\u0443. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 Grav \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0443\u0442\u0438. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 Twig-\u0444\u0430\u0439\u043b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u0435\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 templates/default.html.twig, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 templates/ru/ \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0442\u0443\u0434\u0430 \u0432\u0430\u0448 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Twig-\u0444\u0430\u0439\u043b: \u0448\u0430\u0431\u043b\u043e\u043d\u044b/ru/default.html.twig.

\u0414\u0440\u0443\u0433\u0430\u044f \u043e\u043f\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0443\u0447\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 template: \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

template: default.ru\n

\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 \u0444\u0430\u0439\u043b\u0435 templates/default.ru.html.twig.

\u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 Twig.

\u0415\u0441\u043b\u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0448\u0430\u0431\u043b\u043e\u043d Twig \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

"},{"location":"content/multi-language/#perevod-cherez-twig","title":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 Twig","text":"

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0432 \u0432\u0430\u0448\u0438\u0445 Twig-\u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u2014 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 |t. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e t() Twig, \u043d\u043e, \u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0444\u0438\u043b\u044c\u0442\u0440 \u0447\u0438\u0449\u0435 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435:

<h1 id=\"site-name\">{{ \"SITE_NAME\"|t }}</h1>\n<section id=\"header\">\n    <h2>{{ \"HEADER.MAIN_TEXT\"|t }}</h2>\n    <h3>{{ \"HEADER.SUB_TEXT\"|t }}</h3>\n</section>\n

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Twig t() \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e:

<h1 id=\"site-name\">{{ t(\"SITE_NAME\") }}</h1>\n<section id=\"header\">\n    <h2>{{ t(\"HEADER.MAIN_TEXT\") }}</h2>\n    <h3>{{ t(\"HEADER.SUB_TEXT\") }}</h3>\n</section>\n

\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043d\u043e\u0432\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440/\u0444\u0443\u043d\u043a\u0446\u0438\u044f Twig \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u043c\u0435\u0441\u044f\u0446\u044b, \u0433\u043e\u0434\u0430 \u0438\u043b\u0438 \u0434\u043d\u0438 \u043d\u0435\u0434\u0435\u043b\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043a\u0430\u0436\u0435\u043c, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434:

en:\n  GRAV:\n    MONTHS_OF_THE_YEAR: [January, February, March, April, May, June, July, August, September, October, November, December]\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0434\u043b\u044f \u043c\u0435\u0441\u044f\u0446\u0430 \u043f\u043e\u0441\u0442\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

{{ 'GRAV.MONTHS_OF_THE_YEAR'|ta(post.date|date('n') - 1) }}\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Twig \u0441 ta().

"},{"location":"content/multi-language/#perevody-s-peremennymi","title":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438","text":"

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u0432\u0430\u0448\u0438\u0445 Twig-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 PHP-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 sprintf:

SIMPLE_TEXT: There are %d monkeys in the %s\n

\u0410 \u0437\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Twig:

{{ \"SIMPLE_TEXT\"|t(12, \"\u041b\u043e\u043d\u0434\u043e\u043d\u0441\u043a\u043e\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u0435\") }}\n

\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434:

\u0412 \u041b\u043e\u043d\u0434\u043e\u043d\u0441\u043a\u043e\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u0435 \u0436\u0438\u0432\u0443\u0442 12 \u043e\u0431\u0435\u0437\u044c\u044f\u043d\n
"},{"location":"content/multi-language/#kompleksnye-perevody","title":"\u041a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0441 \u0437\u0430\u043c\u0435\u043d\u043e\u0439 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u043c\u043e\u0449\u044c \u043c\u0435\u0442\u043e\u0434\u0430 translate() \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430/\u0444\u0443\u043d\u043a\u0446\u0438\u0438 tl. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

{{ [\"SIMPLE_TEXT\", 12, '\u041b\u043e\u043d\u0434\u043e\u043d\u0441\u043a\u043e\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u0435']|tl(['ru']) }}\n

\u041f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 SIMPLE_TEXT \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u044b \u043d\u0430 12 \u0438 \u041b\u043e\u043d\u0434\u043e\u043d\u0441\u043a\u043e\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430\u043c\u0438 \u044f\u0437\u044b\u043a\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430-\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a:

\u0412 \u041b\u043e\u043d\u0434\u043e\u043d\u0441\u043a\u043e\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u0435 \u0436\u0438\u0432\u0443\u0442 12 \u043e\u0431\u0435\u0437\u044c\u044f\u043d\n
"},{"location":"content/multi-language/#perevody-php","title":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u044b PHP","text":"

\u0422\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0438 Twig-\u0444\u0438\u043b\u044c\u0442\u0440 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432 \u0432\u0430\u0448\u0435\u043c Grav-\u043f\u043b\u0430\u0433\u0438\u043d\u0435:

$translation = $this->grav['language']->translate(['HEADER.MAIN_TEXT']);\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u044f\u0437\u044b\u043a:

$translation = $this->grav['language']->translate(['HEADER.MAIN_TEXT'], 'ru');\n

\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430:

$translation = $this->grav['language']->translateArray('GRAV.MONTHS_OF_THE_YEAR', 3);\n
"},{"location":"content/multi-language/#perevod-plaginov-i-tem","title":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c","text":"

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445 \u0438 \u0442\u0435\u043c\u0430\u0445. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 languages.yaml \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u043b\u0438 \u0442\u0435\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. /user/plugins/error/languages.yaml, \u0438\u043b\u0438 user/themes/antimatter/languages.yaml) \u0441 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435\u0445 \u044f\u0437\u044b\u043a\u043e\u0432:

en:\n  PLUGIN_ERROR:\n    TITLE: Error Plugin\n    DESCRIPTION: The error plugin provides a simple mechanism for handling error pages within Grav.\nru:\n  PLUGIN_ERROR:\n    TITLE: \u041f\u043b\u0430\u0433\u0438\u043d \u043e\u0448\u0438\u0431\u043e\u043a\n    DESCRIPTION: \u041f\u043b\u0430\u0433\u0438\u043d \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0432 Grav.\n

\u0423\u0441\u043b\u043e\u0432\u0438\u0435\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 PLUGIN_PLUGINNAME.* \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u043e\u043a \u044f\u0437\u044b\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0438\u043c\u0435\u043d. \u0422\u0435\u043c\u044b \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438\u0432\u0435\u0434\u0443\u0442 \u043a \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430\u043c \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a, \u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0438\u0434\u0435\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0441\u0442\u0440\u043e\u043a, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0432 \u0442\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e THEME_THEMENAME.*.

"},{"location":"content/multi-language/#pereopredeleniia-perevoda","title":"\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u0444\u0430\u0439\u043b \u0432 \u0432\u0430\u0448\u0435\u0439 \u043f\u0430\u043f\u043a\u0435 user/languages/. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0430\u0439\u043b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c user/languages/en.yaml \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c:

PLUGIN_ERROR:\n  TITLE: My Error Plugin\n

\u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430, \u043d\u0435 \u043f\u0443\u0442\u0430\u044f\u0441\u044c \u0441 \u0441\u0430\u043c\u0438\u043c\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0438\u043b\u0438 \u0442\u0435\u043c\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043f\u0440\u0438 \u0438\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438.

"},{"location":"content/multi-language/#rasshirennye-nastroiki","title":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","text":""},{"location":"content/multi-language/#obrabotka-iazykov-na-osnove-okruzheniia","title":"\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u044f\u0437\u044b\u043a\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f Grav \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c URL \u0442\u0438\u043f\u0430 http://ruench.mysite.com, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u043c \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e http://www.mysite.com, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0440\u0435\u0434\u044b:

/user/ruench.mysite.com/config/system.yaml

languages:\n  supported:\n    - ru\n    - en\n

\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u044f\u0437\u044b\u043a ru.

"},{"location":"content/multi-language/#iazykovye-marshruty-psevdonimov","title":"\u042f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u0432","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442, \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Page \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 (.rawRoute()), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u044f\u0437\u044b\u043a. \u0412\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430 \u0432\u043f\u0435\u0440\u0435\u0434\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043a\u0430\u0436\u0435\u043c, \u0432\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c:

/my-custom-english-page\n

\u041b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442:

/\u043c\u043e\u044f-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:

/blog/custom/my-page\n

\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043d\u0443\u0436\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u0438 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 URL:

/ru/blog/custom/my-page\n

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0443 \u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0447\u0442\u043e \u0438 /\u043c\u043e\u044f-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430.

"},{"location":"content/multi-language/#podderzhka-perevoda","title":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430","text":"

Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0432 Twig, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 PHP \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0442\u0435\u043c\u0430\u0445 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445. \u042d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044f\u0437\u044b\u043a en, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043d\u0438 \u043e\u0434\u0438\u043d \u0434\u0440\u0443\u0433\u043e\u0439 \u044f\u0437\u044b\u043a. \u0414\u043b\u044f \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0432 \u0432\u0430\u0448\u0435\u043c system.yaml \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440:

languages:\n  translations: true\n

\u0412 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u044f\u0437\u044b\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c languages: supported: \u0432 \u0432\u0430\u0448\u0435\u043c system.yaml.

\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Grav, \u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u0442 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432.

\u041f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 Grav \u0438\u0449\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 system/languages. \u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435: en.yaml, ru.yaml \u0438 \u0442. \u0434. \u041a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b yaml \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043b\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043f\u0430\u0440 \u043a\u043b\u044e\u0447/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:

SITE_NAME: My Blog Site\nHEADER:\n    MAIN_TEXT: Welcome to my new blog site\n    SUB_TEXT: Check back daily for the latest news\n

\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 Grav \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0435\u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Twig.

Grav \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430\u0437\u0430\u0434 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u044f\u0437\u044b\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434, \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u042d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0446\u0438\u0438 translations_fallback:

languages:\n  translations_fallback: true\n

\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435 Grav \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u044f\u0437\u044b\u043a\u0435. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 Crowdin \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u044f\u0434\u0440\u0430 Grav \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 Grav. \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0439\u0442\u0435\u0441\u044c \u0438 \u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435!

"},{"location":"content/multi-language/#aktivnyi-iazyk-v-sessii","title":"\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0432 \u0441\u0435\u0441\u0441\u0438\u0438","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 URL, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430. \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u043e\u043f\u0446\u0438\u044f \u0432 system.yaml. \u0417\u0430\u0442\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u044f\u0437\u044b\u043a\u0430:

languages:\n  session_store_active: true\n

\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u0432 \u0441\u0435\u0441\u0441\u0438\u0438.

"},{"location":"content/multi-language/#perekliuchatel-iazykov","title":"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u044f\u0437\u044b\u043a\u043e\u0432","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 GPM \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e:

bin/gpm install langswitcher\n

\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 GitHub.

"},{"location":"content/multi-language/#nastroika-s-iazykovymi-domenami","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u043c\u0438 \u0434\u043e\u043c\u0435\u043d\u0430\u043c\u0438","text":"

\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044f\u0437\u044b\u043a\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u044f\u0437\u044b\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u043f\u0435\u0440\u0432\u044b\u0439 \u044f\u0437\u044b\u043a) \u0434\u043e\u043c\u0435\u043d\u0430\u043c.

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440

pages.redirect_default_route: true\n

\u0432 \u0432\u0430\u0448\u0435\u043c system.yaml \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true.

\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432 \u0432\u0430\u0448 .htaccess \u0444\u0430\u0439\u043b \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0441\u043b\u0430\u0433\u0438 \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043d\u0443\u0436\u0434\u0430\u043c\u0438:

# http://www.cheat-sheets.org/saved-copy/mod_rewrite_cheat_sheet.pdf\n# http://www.workingwith.me.uk/articles/scripting/mod_rewrite\n\n# handle top level e.g. http://grav-site.com/ru\nRewriteRule ^en/?$ \"http://grav-site.com\" [R=302,L]\nRewriteRule ^ru/?$ \"http://grav-site.ru\" [R=302,L]\n\n# handle sub pages, exclude admin path\nRewriteCond %{REQUEST_URI} !(admin) [NC]\nRewriteRule ^en/(.*)$ \"http://grav-site.com/$1\" [R=302,L]\nRewriteCond %{REQUEST_URI} !(admin) [NC]\nRewriteRule ^ru/(.*)$ \"http://grav-site.ru/$1\" [R=302,L]\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430 GitHub, \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0443 \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"content/multi-language/#iazykovaia-logika-v-shablonakh-twig","title":"\u042f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Twig","text":"

\u0427\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u0438 \u043b\u043e\u0433\u0438\u043a\u0435 \u044f\u0437\u044b\u043a\u0430 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0438 \u0438\u043c\u0435\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 (myimage.en.jpg \u0438 myimage.ru.jpg).

\u0414\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u043d\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a. \u042d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432 Grav \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 Language \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044a\u0435\u043a\u0442 Grav \u0438 \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430 Twig:

{{ page.media.images['myimage.'~grav.language.getActive~'.jpg'].html }}\n

\u0412\u044b\u0437\u043e\u0432 getActive \u0432 Twig \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 Language->getActive() \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u044f\u0437\u044b\u043a\u0430. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f:

  • getLanguages() - \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432
  • getLanguage() - \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044f\u0437\u044b\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e
  • getActive() - \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a
  • getDefault() - \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044f\u0437\u044b\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u043f\u0435\u0440\u0432\u044b\u0439)

\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \\Grav\\Common\\Language\\Language.php.

"},{"location":"content/routing/","title":"\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f","text":""},{"location":"content/routing/#marshrutizatsiia","title":"\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f","text":"

\u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 -> \u041f\u0430\u043f\u043a\u0438, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0432 Grav \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u043f\u0430\u043f\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u0415\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0433\u0434\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c, \u0438 Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u0436\u0438\u0437\u043d\u044c \u043f\u0440\u043e\u0449\u0435 \u0432 \u044d\u0442\u043e\u043c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438.

\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u043b\u0438 \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u0441 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b CMS \u043d\u0430 Grav, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430:

  1. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043f\u043e\u043a.
  2. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 \u0442\u0430\u043a, \u043a\u0430\u043a \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u0430\u0448 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u00ab\u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c\u00bb \u0441\u0442\u0430\u0440\u044b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u043d\u043e\u0432\u044b\u0435 \u043c\u0435\u0441\u0442\u0430.
  3. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 \u0442\u0430\u043a, \u043a\u0430\u043a \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 Grav \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u0445 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 \u043d\u043e\u0432\u044b\u0435 \u043c\u0435\u0441\u0442\u0430.

\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u0430\u0439\u0442 Grav \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u043d\u0430 URL-\u0430\u0434\u0440\u0435\u0441\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0438\u043a\u0442\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043f\u043e\u043a, \u0438 Grav \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0446\u0435\u043b\u0438.

"},{"location":"content/routing/#pereopredelenie-marshruta-na-urovne-stranits","title":"\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 -> \u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044f\u0432\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432:

routes:\n  default: '/my/example/page'\n  canonical: '/canonical/url/alias'\n  aliases:\n    - '/some/other/route'\n    - '/can-be-any-valid-slug'\n

\u042d\u0442\u0438 \u043e\u043f\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043a\u044d\u0448\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u044b\u0440\u044b\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043d\u0430 \u0441\u043b\u0430\u0433\u0430\u0445 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (\u0442\u0430\u043a Grav \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043f\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c, \u0441\u044b\u0440\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d.

Grav \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0421\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 -> \u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.

redirect: '/some/custom/route[303]'\n
"},{"location":"content/routing/#marshruty-i-pereadresatsii-na-urovne-saita","title":"\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0438 \u043f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0430\u0439\u0442\u0430","text":"

Grav \u0438\u043c\u0435\u0435\u0442 \u043c\u043e\u0449\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0435 \u0441\u0430\u0439\u0442 \u0432 Grav \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u043e\u0432\u044b\u043c \u0441\u0430\u0439\u0442\u043e\u043c. \u042d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u0433\u0438\u0431\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c Grav \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0445.

\u041e\u043d\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0430\u0439\u0442\u0430. Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c system/config/site.yaml, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u0444\u0430\u0439\u043b user/config/site.yaml.

\u0412\u0441\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a \u0441\u043b\u0430\u0433\u0443, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u043c\u0443\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 (\u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b)

\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u043b\u044e\u0431\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0435 \u0441\u0442\u0430\u0440\u044b\u0439 \u0441\u0430\u0439\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0441\u044b\u043b\u043a\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, .php) \u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b URL (?foo=bar). \u0412 \u044d\u0442\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0442\u043e\u0447\u043a\u0430 \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u043d\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b: /index\\.php\\?foo=bar: '/new/location'.

"},{"location":"content/routing/#psevdonimy-marshruta","title":"\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430","text":""},{"location":"content/routing/#prostye-psevdonimy","title":"\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u044b","text":"

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0438\u0434 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430 \u2014 \u044d\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043d\u043e-\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 routes: \u0444\u0430\u0439\u043b\u0430 site.yaml \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.

\u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c.

routes:\n  /something/else: '/blog/focus-and-blur'\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0438 URL-\u0430\u0434\u0440\u0435\u0441 http://mysite.com/something/else, \u0438 \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0430\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u0432 /blog/focus-and-blur, \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043e\u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c.

"},{"location":"content/routing/#psevdonimy-na-osnove-reguliarnykh-vyrazhenii","title":"\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439","text":"

\u0411\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430 \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0431\u044b\u043b\u0438:

routes:\n   /another/(.*): '/blog/$1'\n

\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430 \u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443, \u0442\u0430\u043a \u0447\u0442\u043e http://mysite.com/another/focus-and-blur \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435 /blog/focus-and-blur. \u042d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u043d\u0430\u0431\u043e\u0440 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c. \u041e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0441 WordPress \u043d\u0430 Grav :)

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c, \u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c:

routes:\n  /one-ring/(.*): '/blog/sunshine-in-the-hills'\n

\u0421 \u044d\u0442\u0438\u043c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u043b\u044e\u0431\u044b\u0435 URL, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u043a\u0443 /one-ring/to-rule-them-all \u0438\u043b\u0438 /one-ring/is-mine.html, \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u044f\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c /blog/sunshine-in-the-hills.

\u0412\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439:

routes:\n  /complex/(category|section)/(.*): /blog/$1/folder/$2\n

\u042d\u0442\u043e \u0441\u043e\u0432\u043f\u0430\u043b\u043e \u0431\u044b \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b\u043e \u0431\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

/complex/category/article-1      -> /blog/category/folder/article-1\n/complex/section/article-2.html  -> /blog/section/folder/article-2.html\n

\u042d\u0442\u043e\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 complex/category \u0438\u043b\u0438 complex/section. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 Regexr.com \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439.

"},{"location":"content/routing/#perenapravleniia","title":"\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f","text":"

\u0414\u0440\u0443\u0433\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0434\u043b\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438. \u041e\u043d\u0438 \u043f\u043e\u0445\u043e\u0436\u0438, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c URL \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438\u0437 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0441 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u043c, Grav \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0430 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.

\u041d\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u043b\u0438\u044f\u044e\u0442 \u0442\u0440\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435:

pages:\n  redirect_default_route: false\n  redirect_default_code: 302\n  redirect_trailing_slash: true\n
  • redirect_default_route \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 Grav \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.
  • redirect_default_code \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u0434\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f HTTP \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:
    • 301: \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u041a\u043b\u0438\u0435\u043d\u0442\u044b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 URI. \u041a\u043b\u0438\u0435\u043d\u0442\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 POST/PUT/DELETE.
    • 302: \u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435. \u041a\u043b\u0438\u0435\u043d\u0442\u044b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 URI. \u041a\u043b\u0438\u0435\u043d\u0442\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 POST/PUT/DELETE.
    • 303: \u041f\u0435\u0440\u0435\u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \"\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435\". \u041a\u043b\u0438\u0435\u043d\u0442\u044b, \u0434\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441, \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 URI. \u041a\u043b\u0438\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0434\u043b\u044f POST/PUT/DELETE \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.
    • 307: \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f. \u0420\u0435\u0441\u0443\u0440\u0441 \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0437\u0436\u0435. \u041a\u043b\u0438\u0435\u043d\u0442\u044b, \u0434\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441, \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 URI. \u041a\u043b\u0438\u0435\u043d\u0442\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b POST/PUT/DELETE.
  • \u041e\u043f\u0446\u0438\u044f redirect_trailing_slash \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043d\u0435 \u0442\u0440\u0435\u0439\u043b\u0438\u043d\u0433\u043e\u0432\u0443\u044e \u043a\u043e\u0441\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e URL.

\u041f\u0440\u0438\u043c\u0435\u0440:

redirects:\n    /jungle: '/blog/the-urban-jungle'\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u044f\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438 [] \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c URL:

redirects:\n    /jungle: '/blog/the-urban-jungle[303]'\n

\u0415\u0441\u043b\u0438 \u0431\u044b \u0432\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0441\u0432\u043e\u0435\u043c\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u043d\u0430 http://mysite.com/jungle, \u0432\u044b \u0431\u044b \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 http://mysite.com/blog/the-urban-jungle.

\u0422\u0435 \u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u043b\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

redirects:\n    /redirect-test/(.*): /$1\n    /complex/(category|section)/(.*): /blog/$1/folder/$2\n

\u041e\u043d\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u043e\u0447\u0442\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e \u0432\u0435\u0440\u0441\u0438\u0438 Route Alias, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, Grav \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e.

"},{"location":"content/routing/#skrytie-marshruta-home","title":"\u0421\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 Home","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b system.yaml:

home:\n  alias: '/home'\n

\u0412\u044b \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 Grav \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442 / \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 Grav \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0434\u043b\u044f URL-\u0430\u0434\u0440\u0435\u0441\u0430 /, \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438.

\u041e\u0434\u043d\u0430\u043a\u043e Grav \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043f\u043e\u0434 \u044d\u0442\u043e\u0439 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u0418\u0442\u0430\u043a, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c /blog, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0430\u0448\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0431\u043b\u043e\u0433\u0435, \u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 \u0435\u0451 \u043a\u0430\u043a \u0441\u0432\u043e\u044e \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0436\u043c\u0435\u0442\u0435 \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u043e\u0433\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u043f\u0430\u043f\u043a\u043e\u0439 /blog, URL-\u0430\u0434\u0440\u0435\u0441\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c /blog/my-blog-post. \u042d\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043d\u0430\u043c\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u0441\u044c. \u0415\u0441\u0442\u044c \u043d\u043e\u0432\u0430\u044f \u043e\u043f\u0446\u0438\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u0447\u0435\u0440\u0435\u0437 system.yaml, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u043e\u0442 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c /blog \u043e\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d \u0432\u043a\u043b\u044e\u0447\u0435\u043d.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:

home:\n  hide_in_urls: true\n
"},{"location":"content/taxonomy/","title":"\u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f","text":""},{"location":"content/taxonomy/#taksonomiia","title":"\u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f","text":"

\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Grav \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u043e\u043c\u0435\u0447\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043f\u0440\u044f\u043c\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0435\u0439.

\u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f \u2014 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0438 \u043d\u0430\u0443\u043a\u0430 (\u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435) \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0435\u0449\u0435\u0439 \u0438\u043b\u0438 \u043f\u043e\u043d\u044f\u0442\u0438\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b, \u043b\u0435\u0436\u0430\u0449\u0438\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.

\u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044f

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432:

  1. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0438\u043f\u043e\u0432 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u0432 site.yaml.
  2. \u041d\u0430\u0437\u043d\u0430\u0447\u044c\u0442\u0435 \u0441\u0432\u043e\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0438\u043f\u044b \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438.
"},{"location":"content/taxonomy/#primer-taksonomii","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438","text":"

\u042d\u0442\u0443 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0431\u043b\u043e\u0433. \u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u0433\u0435 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0442\u0435\u0433\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u043a\u0430 \u0442\u0435\u0433\u043e\u0432. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0432\u0442\u043e\u0440\u043e\u0432, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u043c\u0443 \u0430\u0432\u0442\u043e\u0440\u0443.

\u0414\u043e\u0441\u0442\u0438\u0447\u044c \u044d\u0442\u043e\u0433\u043e \u0432 Grav \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430. Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0430\u0439\u043b site.yaml \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 system/config. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0434\u0432\u0430 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0438\u043f\u0430 category \u0438 tag:

taxonomies: [category,tag]\n

\u0422\u0430\u043a \u043a\u0430\u043a tag \u0443\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c authors. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 site.yaml \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c/config \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:

taxonomies: [category,tag,author]\n

\u042d\u0442\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0435\u0442 Grav, \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043d\u0435\u0441\u0435\u043d\u044b \u043a \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0442\u0440\u0435\u0445 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0439.

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u044d\u0442\u0438 \u0442\u0438\u043f\u044b \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0432\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:

---\ntitle: Post 1\ntaxonomy:\n    tag: [animal, dog]\n    author: ksmith\n---\n\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n

... \u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:

---\ntitle: Post 2\ntaxonomy:\n    tag: [animal, cat]\n    author: jdoe\n---\n\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n

\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 YAML, \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0442\u0438\u043f\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 site.yaml. \u042d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Grav, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438.

\u0412\u0430\u0448\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c site.yaml, \u043d\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435.

\u0412 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 ksmith \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e taxonomy.findTaxonomy(), \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0438\u0445 \u0438 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0430\u0434 \u043d\u0438\u043c\u0438 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e:

<h2>Kevin Smith's Posts</h2>\n<ul>\n    {% for post in taxonomy.findTaxonomy({'author':'ksmith'}) %}\n        <li>{{ post.title }}</li>\n    {% endfor %}\n</ul>\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u044b/\u0445\u044d\u0448\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

{% for post in taxonomy.findTaxonomy({'tag':['animal','cat'],'author':'jdoe'}) %}\n

\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432\u0441\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 tag, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0432 animal \u0438 cat, \u0438 author, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0432 jdoe. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u041f\u043e\u0441\u0442 2.

\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043e\u0434\u0438\u043d \u0442\u0435\u0440\u043c\u0438\u043d \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 or \u043f\u043e\u0441\u043b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

{% for post in taxonomy.findTaxonomy({'tag':['dog','cat']},'or') %}\n

\u0411\u0443\u0434\u0443\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432\u0441\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0442\u0435\u0433\u043e\u043c dog \u0438\u043b\u0438 cat.

"},{"location":"content/taxonomy/#kollektsii-na-osnove-taksonomii","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438","text":"

\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u044d\u0442\u043e \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0433\u043b\u0430\u0432, \u043d\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0441\u0432\u0435\u0436\u0438\u0442\u044c \u044d\u0442\u0443 \u0442\u0435\u043c\u0443, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u0435 \u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0431\u043e\u0440\u043d\u0438\u043a\u043e\u0432 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438.

"},{"location":"content/taxonomy/#dobavlenie-polzovatelskikh-znachenii-taksonomii-v-znacheniiakh-po-umolchaniiu-i-parametrakh","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e Default \u0438/\u0438\u043b\u0438 Options. \u0412\u0430\u0436\u043d\u044b\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435\u043c \u0437\u0434\u0435\u0441\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u043e\u0438\u0445 \u044d\u0442\u0438\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c validate: type: commalist, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.

taxonomies:\n  fields:\n    header.taxonomy:\n      default:\n        category: ['blog','page']\n        tag: ['test']\n      options:\n        category: ['grav']\n      validate:\n        type: commalist\n
"},{"location":"cookbook/admin-recipes/","title":"\u0420\u0435\u0446\u0435\u043f\u0442\u044b \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":""},{"location":"cookbook/admin-recipes/#retsepty-adminki","title":"\u0420\u0435\u0446\u0435\u043f\u0442\u044b \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u043c\u0438 Grav Admin.

"},{"location":"cookbook/admin-recipes/#dobavlenie-polzovatelskogo-faila-yaml","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 YAML","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0433\u0440\u0443\u043f\u043f\u0443 \u043f\u043e\u043b\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 system.yaml \u0438\u043b\u0438 site.yaml, \u043d\u043e \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435.

\u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041e\u0441\u043d\u043e\u0432\u044b / \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, \u043f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 YAML, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: user/config/details.yaml:

name: 'ABC Company Limited'\naddress: '8732 North Cumbria Street, Golden, CO, 80401'\nemail:\ngeneral: 'hello@abc-company.com'\nsupport: 'support@abc-company.com'\nsales: 'sales@abc-company.com'\nphone:\ndefault: '555-123-1111'\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b. \u0427\u0435\u0440\u0442\u0451\u0436 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043d\u043e \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 - \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436 \u0432 \u0444\u0430\u0439\u043b: user/blueprints/config/details.yaml

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u043d \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d, \u0432\u0430\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u0441\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430:

<?php\n\nclass MyPlugin extends Plugin\n{\n    public $features = [\n        'blueprints' => 1000,\n    ];\n\n    protected $version;\n    ...\n

\u0417\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u0441\u0432\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 onPluginsInitialized():

<?php\n\nif ($this->isAdmin()) {\n    // Store this version and prefer newer method\n    if (method_exists($this, 'getBlueprint')) {\n        $this->version = $this->getBlueprint()->version;\n    } else {\n        $this->version = $this->grav['plugins']->get('admin')->blueprints()->version;\n    }\n}\n

\u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c user/plugins/myplugin/blueprints/config/details.yaml

\u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:

title: Company Details\nform:\n    validation: loose\n    fields:\n\n        content:\n            type: section\n            title: 'Details'\n            underline: true\n        name:\n            type: text\n            label: 'Company Name'\n            size: medium\n            placeholder: 'ACME Corp'\n\n        address:\n            type: textarea\n            label: 'Address'\n            placeholder: '555 Somestreet,\\r\\nNewville, TX, 77777'\n            size: medium\n\n        email:\n            type: array\n            label: 'Email Addresses'\n            placeholder_key: Key\n            placeholder_value: Email Address\n\n        phone:\n            type: array\n            label: 'Phone Numbers'\n            placeholder_key: Key\n            placeholder_value: Phone Number\n

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f array \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.

"},{"location":"cookbook/admin-recipes/#dobavlenie-modalnogo-okna-dlia-sozdaniia-polzovatelskoi-stranitsy","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435 \u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0433\u0430\u043b\u0435\u0440\u0435\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u043e\u0433\u0435. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u043b\u043e\u0433 \u0438 \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043d\u0443\u0436\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u043d\u0430\u0436\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443.

\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b: user/blueprints/admin/pages/new_post.yaml.

form:\nvalidation: loose\nfields:\n    section:\n        type: section\n        title: Add Post\n\n    title:\n    type: text\n    label: Post Title\n    validate:\n        required: true\n\n    folder:\n    type: hidden\n    default: '@slugify-title'\n\n    route:\n    type: hidden\n    default: /posts\n\n    name:\n    type: hidden\n    default: 'post'\n\n    visible:\n    type: hidden\n    default: ''\n\n    blueprint:\n    type: blueprint\n

\u042d\u0442\u0430 \u0444\u043e\u0440\u043c\u0430 \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Add Page. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0434\u043b\u044f \u043f\u0430\u043f\u043a\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435: @slugify-title. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0430\u043f\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0432\u0432\u043e\u0434\u0430 \u0444\u043e\u0440\u043c\u044b title. route - \u044d\u0442\u043e /posts, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0435\u043d \u0432 \u043f\u0430\u043f\u043a\u0443 /posts.

name \u044d\u0442\u043e post, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0442\u0451\u0436 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b post.

\u0412\u0442\u043e\u0440\u043e\u0439 \u0448\u0430\u0433 - \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 admin.yaml \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b user/config/plugins/admin.yaml \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442:

add_modals:\n  -\n    label: Add Post\n    blueprint: admin/pages/new_post\n    show_in: bar\n

\u041a\u043b\u044e\u0447\u0438/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f add_modals:

  • label - \u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0435
  • show_in (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: bar) (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: bar|dropdown) - \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430 bar \u0438\u043b\u0438 dropdown
  • blueprint - \u0447\u0435\u0440\u0442\u0435\u0436, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c
  • template - \u0448\u0430\u0431\u043b\u043e\u043d, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u043c (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: partials/blueprints-new.html.twig)
  • with - \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0448\u0430\u0431\u043b\u043e\u043d
  • link_classes - \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0441\u0441\u044b\u043b\u043a\u0438
  • modal_classes - \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443
"},{"location":"cookbook/admin-recipes/#dobavlenie-nastraivaemogo-polia-vybora","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043b\u0438\u0431\u043e \u0432 php-\u0444\u0430\u0439\u043b\u0435 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b, \u043b\u0438\u0431\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435.

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a \u0442\u0435\u043c\u0435 Antimatter, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b antimatter.php, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/themes/antimatter.

<?php\n\nnamespace Grav\\Theme;\n\nuse Grav\\Common\\Theme;\n\nclass Antimatter extends Theme\n{\n    public static function countryCodes()\n    {\n        return array (\n            'AF' => 'Afghanistan',\n            'AX' => '\u00c5land Islands',\n            'AL' => 'Albania',\n            'DZ' => 'Algeria',\n            'AS' => 'American Samoa',\n            'AD' => 'Andorra',\n            'AO' => 'Angola',\n            'AI' => 'Anguilla',\n            'AQ' => 'Antarctica',\n            'AG' => 'Antigua & Barbuda',\n            'AR' => 'Argentina',\n            'AM' => 'Armenia',\n            'AW' => 'Aruba',\n            'AC' => 'Ascension Island',\n            'AU' => 'Australia',\n            'AT' => 'Austria',\n            'AZ' => 'Azerbaijan',\n            'BS' => 'Bahamas',\n            'BH' => 'Bahrain',\n            'BD' => 'Bangladesh',\n            'BB' => 'Barbados',\n            'BY' => 'Belarus',\n            'BE' => 'Belgium',\n            'BZ' => 'Belize',\n            'BJ' => 'Benin',\n            'BM' => 'Bermuda',\n            'BT' => 'Bhutan',\n        );\n    }\n}\n

\u042d\u0442\u043e \u0443\u0440\u0435\u0437\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c/\u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d \u0438\u0437 umpirsky/count-list

\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438\u0437 \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0438\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

country:\n  type: select\n  label: Country\n  data-options@: '\\Grav\\Theme\\Antimatter::countryCodes'\n

\u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435

"},{"location":"cookbook/general-recipes/","title":"\u041e\u0431\u0449\u0438\u0435 \u0440\u0435\u0446\u0435\u043f\u0442\u044b","text":""},{"location":"cookbook/general-recipes/#obshchie-retsepty","title":"\u041e\u0431\u0449\u0438\u0435 \u0440\u0435\u0446\u0435\u043f\u0442\u044b","text":"

\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a Grav \u0432 \u0446\u0435\u043b\u043e\u043c.

"},{"location":"cookbook/general-recipes/#izmenenie-versii-php-cli","title":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 PHP CLI","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u0435\u0440\u0441\u0438\u044f PHP \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 PHP, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e PHP, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u0443\u044e \u0432 CLI, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 php -v. \u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u044f PHP \u043d\u0438\u0436\u0435 5.5.9, Grav \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f PHP 5.5.9.

\u041a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c?

\u0412\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 .bashrc \u0438\u043b\u0438 \u0432.bash_profile \u0432 \u0432\u0430\u0448\u0435\u0439 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u043f\u0430\u043f\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u0445 \u0435\u0449\u0451 \u043d\u0435\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 ls -al, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c. \u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0430\u043d\u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:

alias php=\"/usr/local/bin/php53\"\nexport PHP_PATH = /usr/local/bin/php53\n

\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 - \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:

# .bash_profile\n\n# Get the aliases and functions\nif [ -f ~/.bashrc ]; then\n        . ~/.bashrc\nfi\n\n# User specific environment and startup programs\n\nPATH=/usr/local/lib/php-5.5/bin:$PATH:$HOME/bin\n\nexport PATH\n

\u0422\u043e\u0447\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 PHP. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0443, \u0438\u043b\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u043d\u0430\u0448\u043b\u0438.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438\u043b\u0438 \u043f\u0430\u043f\u043a\u0438 php-something \u0432 \u043f\u0430\u043f\u043a\u0430\u0445 /usr/local/bin \u0438\u043b\u0438 /usr/local/lib \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ls -la /usr/local/lib/ |grep -i php.

"},{"location":"cookbook/general-recipes/#sozdanie-prostoi-galerei","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0433\u0430\u043b\u0435\u0440\u0435\u0438","text":"

\u041e\u0431\u0449\u0435\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a \u0432\u0435\u0431-\u0434\u0438\u0437\u0430\u0439\u043d\u0443 - \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0433\u0430\u043b\u0435\u0440\u0435\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0432\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u043f\u0438\u0442\u043e\u043c\u0446\u0430, \u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0441\u043a\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043c\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0443 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e \u043d\u0438\u0436\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0446\u0435\u043b\u0435\u0439.

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 - \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Grav, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u043e\u0431 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 \u0435\u0451 \u043f\u0430\u043f\u043a\u0435.

\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043d\u0430\u0437\u0432\u0430\u043b\u0438 gallery.md, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435. \u0421\u0430\u043c\u0438 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u0432\u0430\u0436\u043d\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u043c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0444\u0430\u0439\u043b meta.yaml \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439:

- fido-playing.jpg\n- fido-playing.jpg.meta.yaml\n- fido-sleeping.jpg\n- fido-sleeping.jpg.meta.yaml\n- fido-eating.jpg\n- fido-eating.jpg.meta.yaml\n- fido-growling.jpg\n- fido-growling.jpg.meta.yaml\n

\u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 .jpg \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1280 x 720 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 meta.yaml \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430fido-plays.jpg.meta.yaml:

title: Fido Playing with his Bone\ndescription: The other day, Fido got a new bone, and he became really captivated by it.\n

\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0435 \u0432 \u044d\u0442\u0438 \u043c\u0435\u0442\u0430\u0444\u0430\u0439\u043b\u044b, \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0435\u043c, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e.

\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u044d\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u0445\u0440\u043e\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u043e\u0432\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438 \u0438\u0445. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u0448\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f gallery.md, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 templates/gallery.html.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u043d\u0430\u043c \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430:

{% extends 'partials/base.html.twig' %}\n\n{% block content %}\n    {{ page.content }}\n\n    <ul>\n    {% for image in page.media.images %}\n    <li>\n        <div class=\"image-surround\">\n            {{ image.cropResize(300,200).html }}\n        </div>\n        <div class=\"image-info\">\n            <h2>{{ image.meta.title }}</h2>\n            <p>{{ image.meta.description }}</p>\n        </div>\n    </li>\n    {% endfor %}\n    </ul>\n\n{% endblock %}\n

\u0427\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0433\u0430\u043b\u0435\u0440\u0435\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 Twig, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u043b:

{% extends 'partials/base.html.twig' %}\n\n{% block content %}\n    {{ page.content }}\n

\u0438

{% endblock %}\n

\u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 partials/base.html.twig (\u0435\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u0435 \u0435\u0441\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b), \u0437\u0430\u0442\u0435\u043c \u043e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0431\u043b\u043e\u043a content \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c, \u044d\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043b\u044e\u0431\u043e\u0439 page.content. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 gallery.md, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0435 \u043c\u0435\u0434\u0438\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u041c\u044b \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0438\u0445 \u0432 \u0432\u0438\u0434\u0435 \u043d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438 \u043b\u0435\u0433\u043a\u043e \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CSS. \u043c\u044b \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0438\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 image, \u0430 \u0437\u0430\u0442\u0435\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 cropResize(), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0434 \u043d\u0438\u043c \u043c\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u0441 title \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0433\u0430\u043b\u0435\u0440\u0435\u0438, \u0441\u043e\u0437\u0434\u0430\u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u0430\u043c\u0435\u0440\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 EXIF.

"},{"location":"cookbook/general-recipes/#otobrazhenie-soderzhimogo-v-kolonkakh","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u0445","text":"

\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u0445.

\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043d\u043e \u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 - \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0430\u0448 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f, \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u0430\u043a HTML <hr /> \u0438\u043b\u0438 \u0442\u0435\u0433 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u0440\u044b\u0432. \u0412 Markdown \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e 3 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0444\u0438\u0441\u0430\u043c\u0438 \u0438\u043b\u0438 ---. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u0430\u0448\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044b \u044d\u0442\u0438\u043c\u0438 \u0447\u0451\u0440\u0442\u043e\u0447\u043a\u0430\u043c\u0438:

columns.md

---\ntitle: 'Columns Page Test'\n---\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas arcu leo, hendrerit ut rhoncus eu, dictum vitae ligula. Suspendisse interdum at purus eget congue. Aliquam erat volutpat. Proin ultrices ligula vitae nisi congue sagittis. Nulla mollis, libero id maximus elementum, ante dolor auctor sem, sed volutpat mauris nisl non quam.\n\n---\nPhasellus id eleifend risus. In dui tellus, dignissim id viverra non, convallis sed ante. Suspendisse dignissim, felis vitae faucibus dictum, dui mi tempor lectus, non porta elit libero quis orci. Morbi porta neque quis magna imperdiet hendrerit.\n\n---\nPraesent eleifend commodo purus, sit amet viverra nunc dictum nec. Mauris vehicula, purus sed convallis blandit, massa sem egestas ex, a congue odio lacus non quam. Donec vitae metus vitae enim imperdiet tempus vitae sit amet quam. Nam sed aliquam justo, in semper eros. Suspendisse magna turpis, mollis quis dictum sit amet, luctus id tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean eu rutrum mi.\n

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434 ---. \u042d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0440\u043e\u0439\u043d\u043e\u0435 \u0442\u0438\u0440\u0435 \u043f\u0440\u044f\u043c\u043e \u043f\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043e\u043d \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a.

\u0417\u0430\u0442\u0435\u043c \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 columns.html.twig (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0444\u0430\u0439\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u044b\u043b \u043d\u0430\u0437\u0432\u0430\u043d columns.md):

{% extends 'partials/base.html.twig' %}\n\n{% block content %}\n    <table>\n        <tr>\n            {% for column in page.content|split('<hr />') %}\n            <td>{{ column }}</td>\n            {% endfor %}\n        </tr>\n    </table>\n{% endblock %}\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u0433\u043e\u043c <hr /> \u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 3 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0435\u0433 \u0442\u0430\u0431\u043b\u0438\u0446\u044b HTML, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435.

"},{"location":"cookbook/general-recipes/#deistvitelno-prostoi-css-slaider-izobrazhenii","title":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 CSS-\u0441\u043b\u0430\u0439\u0434\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439","text":"

\u0412\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0441\u043b\u0430\u0439\u0434\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432.

\u042d\u0442\u043e\u0442 \u0440\u0435\u0446\u0435\u043f\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 4 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c slider.md! \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b .md. \u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d Twig \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044c\u0442\u0435 base.html.twig.

{% extends 'partials/base.html.twig' %}\n\n{% block content %}\n\n    <div id=\"slider\">\n        <figure>\n        {% for image in page.media.images %}\n            {{ image.html }}\n        {% endfor %}\n        </figure>\n    </div>\n\n    {{ page.content }}\n{% endblock %}\n

\u0414\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0435\u0440\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u0435

{% extends 'partials/base.html.twig' %}\n\n{% block content %}\n

\u0438

{% endblock %}\n

\u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430 Twig.

\u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f css. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e \u0432 \u0441\u0432\u043e\u0439 _custom.scss

@keyframes slidy {\n    0% { left: 0%; }\n    20% { left: 0%; }\n    25% { left: -100%; }\n    45% { left: -100%; }\n    50% { left: -200%; }\n    70% { left: -200%; }\n    75% { left: -300%; }\n    95% { left: -300%; }\n    100% { left: -400%; }\n}\nbody { margin: 0; }\ndiv#slider {\n    overflow: hidden;\n    margin-top: -3rem;\n    max-height: 30rem;\n}\ndiv#slider figure img { width: 20%; float: left; }\ndiv#slider figure {\n    position: relative;\n    width: 500%;\n    margin: 0;\n    left: 0;\n    animation: 30s slidy infinite;\n}\n

\u0412\u043e\u0442 \u0438 \u0432\u0441\u0451.

"},{"location":"cookbook/general-recipes/#perenos-markdown-v-html","title":"\u041f\u0435\u0440\u0435\u043d\u043e\u0441 Markdown \u0432 HTML","text":"

\u041d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e Markdown \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 HTML-\u043a\u043e\u0434 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig.

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

\u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b user/config/system.yaml \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u043f\u0446\u0438\u044e Markdown:

pages:\n  markdown:\n    extra: true\n

\u0432 \u0442\u0435\u0433\u0435 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 markdown=\"1\", \u0447\u0442\u043e\u0431\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e Markdown:

<div class=\"myWrapper\" markdown=\"1\">\n# my markdown content\n\nthis content is wrapped into a div with class \"myWrapper\"\n</div>\n

\u0413\u043e\u0442\u043e\u0432\u043e.

"},{"location":"cookbook/general-recipes/#dobavlenie-vidzheta-nedavnikh-zapisei-na-bokovuiu-panel","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0430 \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442 \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0430 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438

\u0412\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0438\u0439 partials/base.html.twig (\u0441\u043c. \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435), \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d. \u041e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043d\u0438\u0436\u0435:

<div class=\"sidebar-content recent-posts\">\n    <h3>\u041d\u0435\u0434\u0430\u0432\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438</h3>\n    {% for p in page.find('/blog').children.order('date', 'desc').slice(0, 5) %}\n        {% set bannerimage = p.media['banner.jpg'] %}\n        <div class=\"recent-post\">\n            {% if bannerimage %}\n                <div class=\"recent-post-image\">{{ bannerimage.cropZoom(60,60).quality(60) }}</div>\n            {% else %}\n                <div class=\"recent-post-image\"><img src=\"{{ url('theme://images/logo.png') }}\" width=\"60\" height=\"60\"></div>\n            {% endif %}\n            <div class=\"recent-post-text\">\n                <h4><a href=\"{{p.url}}\">{{ p.title }}</a></h4>\n                <p>{{ p.date|date(\"M j, Y\")}}</p>\n            </div>\n        </div>\n    {% endfor %}\n</div>\n

\u0412\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0443 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0431\u043b\u043e\u0433\u0430\u0445) \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b/blog \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e \u0434\u0430\u0442\u044b. \u0417\u0430\u0442\u0435\u043c \u043e\u043d \u0431\u0435\u0440\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u044f\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0431\u043b\u043e\u0433\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0444\u0438\u043b\u044c\u0442\u0440 Twig slice. \u041c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0447\u0438\u043c, slice (n, m) \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0442 n \u0434\u043e m - 1. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0441\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0431\u0430\u043d\u043d\u0435\u0440\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f banner.jpg. \u042d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 bannerimage. \u0415\u0441\u043b\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 bannerimage, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d \u0434\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 60px x 60px \u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438 \u0434\u0430\u0442\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0440\u0430\u0437\u043c\u0435\u0440 \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043e 60px x 60px \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u0430\u0442\u044b.

CSS \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435:

.sidebar-content .recent-post {\n    margin-bottom: 25px;\n    padding-bottom: 25px;\n    border-bottom: 1px solid #F0F0F0;\n    float: left;\n    clear: both;\n    width: 100%;\n}\n\n.sidebar-content [class~='recent-post']:last-of-type {\n    border-bottom: none;\n}\n\n.sidebar-content .recent-post .recent-post-image,\n.sidebar-content .recent-post .recent-post-text {\n    float: left;\n}\n\n.sidebar-content .recent-post .recent-post-image {\n    margin-right: 10px;\n}\n\n.sidebar-content .recent-post .recent-post-text h4 {\n    font-family: serif;\n    margin-bottom: 10px;\n}\n\n.sidebar-content .recent-post .recent-post-text h4 a {\n    color: #193441;\n}\n\n.sidebar-content .recent-post .recent-post-text p {\n    font-family: Arial, sans-serif;\n    font-size: 1.5rem;\n    color: #737373;\n    margin: 0;\n}\n
\u041e\u0442\u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u0432, \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0448\u0440\u0438\u0444\u0442\u0430 \u0438 \u0442\u043e\u043b\u0449\u0438\u043d\u043e\u0439 \u0448\u0440\u0438\u0444\u0442\u0430 \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0432\u043a\u0443\u0441\u0443."},{"location":"cookbook/general-recipes/#sozdanie-zakrytogo-razdela","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430","text":"

Grav \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0435. \u0412\u0441\u0451 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0443 Login.

"},{"location":"cookbook/general-recipes/#trebovanie-ot-polzovatelei-vkhoda-v-sistemu-pered-dostupom-k-chasti-saita","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0447\u0430\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430","text":"

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0433\u043e \u0435\u0449\u0451 \u043d\u0435\u0442, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 GPM.

\u0414\u0430\u043b\u0435\u0435 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0438 \u0432 \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435

access:\n    site.login: true\n

\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u00ab\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u00bb.

\u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u044f\u0441\u044c \u043e\u0431 \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432\u0441\u0435 \u043f\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.

"},{"location":"cookbook/general-recipes/#trebovanie-spetsialnykh-razreshenii-dlia-prosmotra-odnoi-ili-neskolkikh-stranits","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u041f\u043e\u0434\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043b\u044e\u0431\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0412\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

access:\n    site.onlybob: true\n

\u0417\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0411\u043e\u0431\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 site.onlybob \u0432 \u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b bob.yaml \u0432 \u043f\u0430\u043f\u043a\u0435 user/accounts:

access:\n    site.onlybob: true\n
"},{"location":"cookbook/general-recipes/#ispolzovanie-razreshenii-na-osnove-gruppy","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0433\u0440\u0443\u043f\u043f\u044b","text":"

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u0435, \u0430 \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b.

\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u0430\u0439\u043b user/config/groups.yaml, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u0442\u0430\u043a\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:

registered:\n  readableName: '\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438'\n  description: '\u0413\u0440\u0443\u043f\u043f\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439'\n  access:\n    site:\n      login: true\npremium:\n  readableName: '\u041f\u0440\u0435\u043c\u0438\u0443\u043c-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438'\n  description: '\u0413\u0440\u0443\u043f\u043f\u0430 \u0434\u043e\u043d\u0430\u0442\u0435\u0440\u043e\u0432'\n  access:\n    site:\n      login: true\n      paid: true\n

\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u044c\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0432

groups:\n      - premium\n

\u0432 yaml-\u0444\u0430\u0439\u043b\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 user/accounts.

\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u043c \u043a \u0433\u0440\u0443\u043f\u043f\u0435 premium, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c site.paid.

"},{"location":"cookbook/general-recipes/#dobavlenie-koda-javascript-v-nizhnii-kolontitul","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 JavaScript \u0432 \u043d\u0438\u0436\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b","text":"

\u0412\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u00ab\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00bb javascript \u0432 \u043d\u0438\u0436\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b, \u0430 \u043d\u0435 \u0432 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.

\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e - \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0435\u043c\u044b Antimatter.

templates/partials/base.html.twig \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0438\u0436\u043d\u0438\u0439 \u0431\u043b\u043e\u043a \u0434\u043b\u044f js, \u0432\u044b\u0437\u044b\u0432\u0430\u044f {{ assets.js('bottom') }}

{% block bottom %}\n    {{ assets.js('bottom') }}\n{% endblock %}\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u0432 Twig, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u0437\u0432\u0430\u0432

{% do assets.addJs('theme://js/slidebars.min.js', {group: 'bottom'}) %}

\u0438\u043b\u0438 \u0432 PHP

$this->grav['assets']->addJs($this->grav['base_url'] . '/user/plugins/yourplugin/js/somefile.js', ['group' => 'bottom']);

"},{"location":"cookbook/general-recipes/#pereopredelenie-raspolozheniia-papki-zhurnalov-po-umolchaniiu","title":"\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0430\u043f\u043a\u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","text":"

\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 Grav \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f logs/. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0435\u0441\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 logs/ \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0413\u0438\u0431\u043a\u0430\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 Grav \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043f\u0430\u043f\u043e\u043a.

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c grav-logs/. \u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0441 \u0438\u043c\u0435\u043d\u0435\u043c setup.php \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:

<?php\n\nuse Grav\\Common\\Utils;\n\nreturn [\n    'streams' => [\n        'schemes' => [\n            'log' => [\n               'type' => 'ReadOnlyStream',\n               'prefixes' => [\n                   '' => [\"grav-logs\"],\n               ]\n            ]\n        ]\n    ]\n];\n

\u042d\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u043e\u0442\u043e\u043a log \u043f\u0430\u043f\u043a\u043e\u0439 grav-logs/, \u0430 \u043d\u0435 \u043f\u0430\u043f\u043a\u043e\u0439 logs/ \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432 system/src/Grav/Common/Config/Setup.php.

"},{"location":"cookbook/general-recipes/#razdelennaia-sistema-vertikalnogo-meniu","title":"\u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e","text":"

\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u0435\u043d\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f Twig-loop, \u043d\u0435\u043c\u043d\u043e\u0433\u043e CSS \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e JavaScript. \u041e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0435\u043c\u044b Antimatter \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 Twig:

<ol class=\"tree\">\n    {% for page in pages.children.visible %}\n        {% if page.children.visible is empty %}\n            <li class=\"item\">\n            <a href=\"{{ page.url }}\">{{ page.title }}</a>\n        {% else %}\n            <li class=\"parent\">\n            <a href=\"javascript:void(0);\">{{ page.title }}</a>\n            <ol>\n                {% for child in page.children.visible %}\n                    {% if child.children.visible is empty %}\n                        <li class=\"item\">\n                        <a href=\"{{ child.url }}\">{{ child.title }}</a>\n                    {% else %}\n                        <li class=\"parent\">\n                        <a href=\"javascript:void(0);\">{{ child.title }}</a>\n                        <ol>\n                            {% for subchild in child.children.visible %}\n                                <li><a href=\"{{ subchild.url }}\">{{ subchild.title }}</a></li>\n                            {% endfor %}\n                        </ol>\n                    {% endif %}\n                    </li>\n                {% endfor %}\n            </ol>\n        {% endif %}\n        </li>\n    {% endfor %}\n</ol>\n

\u042d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0435 \u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 Grav, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f \u043d\u0430 \u0442\u0440\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0421\u043f\u0438\u0441\u043e\u043a, \u043e\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0432\u0441\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0438\u043c\u0435\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 tree, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 parent, \u0435\u0441\u043b\u0438 \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0438\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435\u0442.

\u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d Twig \u0432 \u0442\u0435\u043c\u0435 Grav, \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e Grav \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c.

\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e CSS:

<style>\nol.tree li {\n    position: relative;\n}\nol.tree li ol {\n    display: none;\n}\nol.tree li.open > ol {\n    display: block;\n}\nol.tree li.parent:after {\n    content: '[+]';\n}\nol.tree li.parent.open:after {\n    content: '';\n}\n</style>\n

\u041e\u0431\u044b\u0447\u043d\u043e \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 Twig \u0438\u043b\u0438, \u0432 \u0438\u0434\u0435\u0430\u043b\u0435, \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b. \u042d\u0444\u0444\u0435\u043a\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 [+] \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e, \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438.

\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e JavaScript \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 open:

<script type=\"text/javascript\">\nvar tree = document.querySelectorAll('ol.tree a:not(:last-child)');\nfor(var i = 0; i < tree.length; i++){\n    tree[i].addEventListener('click', function(e) {\n        var parent = e.target.parentElement;\n        var classList = parent.classList;\n        if(classList.contains(\"open\")) {\n            classList.remove('open');\n            var opensubs = parent.querySelectorAll(':scope .open');\n            for(var i = 0; i < opensubs.length; i++){\n                opensubs[i].classList.remove('open');\n            }\n        } else {\n            classList.add('open');\n        }\n    });\n}\n</script>\n

\u0415\u0433\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Twig, \u0442\u0430\u043a\u0436\u0435 \u0432 \u0438\u0434\u0435\u0430\u043b\u0435 \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432.

"},{"location":"cookbook/general-recipes/#dinamicheskoe-oformlenie-odnoi-ili-neskolkikh-stranits","title":"\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b/\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0430\u0439\u0442\u0435 Grav (\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430), \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 \u0444\u0430\u0439\u043b Twig \u0442\u0435\u043c\u044b \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 CSS, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f/\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0430\u0439\u0442\u0435 Grav \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:

  1. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0442\u0435\u043c\u0443 Antimatter, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 body_classes, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 CSS \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.
  2. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0442\u0435\u043c\u0443, \u043d\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043d\u0430 Antimatter (\u0438\u043b\u0438 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044f body_classes, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442), \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0444\u0430\u0439\u043b Twig \u0442\u0435\u043c\u044b \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 CSS, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0444\u0430\u0439\u043b\u0435 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b base.html.twig \u0438\u043b\u0438 \u0432 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435, \u0442\u0430\u043a\u043e\u043c \u043a\u0430\u043a \u0444\u0430\u0439\u043b page.html.twig, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

<div class=\"{{ page.header.body_classes }}\">\n...\n</div>\n

\u0417\u0430\u0442\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u043c\u0435\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 (\u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0441 CSS \u0434\u043b\u044f featurepost):

body_classes: featurepost\n

\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0442\u0435\u043c\u0430 Antimatter \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u044b, \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0438\u0435 \u043e\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043b\u044f \u043f\u043e\u0434\u0440\u0430\u0436\u0430\u043d\u0438\u044f.

"},{"location":"cookbook/general-recipes/#perenos-html-temy-v-grav","title":"\u041f\u0435\u0440\u0435\u043d\u043e\u0441 HTML-\u0442\u0435\u043c\u044b \u0432 Grav","text":"

\u041f\u0435\u0440\u0435\u043d\u043e\u0441 HTML-\u0442\u0435\u043c\u044b \u043d\u0430 Grav - \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0412\u043e\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438.

\u0412\u044b, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0441\u043a\u0430\u0447\u0430\u043b\u0438 \u0442\u0435\u043c\u0443, \u0438 \u043e\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 HTML. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043c Grav \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u0435\u043c\u0443 HTML, \u043d\u043e \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 Grav.

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d Grav Devtools, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0442\u0435\u043c\u0443, \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 Grav \u0434\u043b\u044f \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445.

\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d Twig templates/home.html.twig \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0442\u0435\u043c\u044b. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0431\u044b\u0447\u043d\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u044d\u0442\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0430, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 Twig.

\u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 HTML-\u043a\u043e\u0434 \u0441 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <html> \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f </html> \u0432 \u0432\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b home.html.twig.

\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0442\u0435\u043c\u044b HTML (\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, CSS, JS) \u0432 \u043f\u0430\u043f\u043a\u0443 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0430\u043f\u043e\u043a \u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0435.

\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0443\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b pages/01.home/home.md. \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 yoursite.com/home: \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043d\u043e CSS, JS \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432 \u0442\u0435\u043c\u0435 \u043e\u043d\u0438 \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u043a \u0441\u0441\u044b\u043b\u043a\u0438 /img/* \u0438\u043b\u0438 /css/*.

"},{"location":"cookbook/general-recipes/#dobavlenie-pravilnykh-ssylok-na-resursy","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u044b","text":"

\u0412 Grav \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 /user/themes/mytheme/img, \u043e\u043d\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 /img \u0432 \u043a\u043e\u0440\u043d\u0435 Grav. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0441\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0435\u043c\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u043c\u044b, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c Grav \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e.

\u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 img/*.* \u043d\u0430 <img src=\"{{ url('theme://img/*.*', true) }}\" />.

\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0438\u043b\u0435\u0439 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u043c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0438\u0445 \u0432 \u0431\u043b\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446 \u0441\u0442\u0438\u043b\u0435\u0439 \u0432 \u0442\u0435\u0433\u0435 <head>.

\u041f\u0440\u0438\u043c\u0435\u0440:

{% block stylesheets %}\n    {% do assets.addCss('theme://css/styles.min.css', 100) %}\n{% endblock %}\n{{ assets.css()|raw }}\n

\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438 \u043a \u0444\u0430\u0439\u043b\u0430\u043c JavaScript \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0447\u0430\u0441\u0442\u044c JS \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u043b\u0430\u0441\u044c \u0432 \u043d\u0438\u0436\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b.

\u041f\u0440\u0438\u043c\u0435\u0440:

{% block javascripts %}\n    {% do assets.addJs('theme://js/custom.js') %}\n    {% do assets.addJs('jquery', 101) %}\n{% endblock %}\n{{ assets.js()|raw }}\n

\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043a\u044d\u0448 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u043a\u044d\u0448 Twig \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Grav.

\u042d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0432\u0430\u0448\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438: \u043e\u0442\u0437\u044b\u0432\u044b \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043e\u0431\u0437\u043e\u0440\u044b, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u0438 \u0442. \u0434.

"},{"location":"cookbook/general-recipes/#dobavlenie-eshche-odnoi-stranitsy","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0431\u043b\u043e\u0433\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b templates/blog.html.twig, \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 HTML-\u043a\u043e\u0434 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 pages/02.blog/blog.md.

\u0422\u0435\u043f\u0435\u0440\u044c, \u0445\u043e\u0442\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043d\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 Grav (\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0443\u0442\u044c), \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0442\u0443 \u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u044b\u0448\u0435 \u0434\u043b\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS \u0438 JS. \u0415\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435.

"},{"location":"cookbook/general-recipes/#obshchie-elementy","title":"\u041e\u0431\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b","text":"

\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u043e\u0431\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (\u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0438 \u043d\u0438\u0436\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b\u044b) \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0438\u0445 \u0432 \u0444\u0430\u0439\u043b templates/partials/base.html.twig.

\u0417\u0430\u0442\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c partials/base.html.twig \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435.

"},{"location":"cookbook/general-recipes/#dobavit-aktiv-na-opredelennuiu-stranitsu","title":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443","text":"

\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b.

\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0432\u0430\u0448\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 Twig \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435.

{% block javascripts %}\n    {% do assets.addJs('theme://js/jquery.js', 91) %}\n{% endblock %}\n{{ assets.js()|raw }}\n

\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043a\u0442\u0438\u0432, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u0432 \u0441\u0432\u043e\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c {{parent ()}}, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0430\u043a\u0442\u0438\u0432\u044b, \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0432\u0430\u0448 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u00abgallery.js\u00bb \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u00ab\u0413\u0430\u043b\u0435\u0440\u0435\u044f \u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e\u00bb. \u041e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e {{parent ()}}.

{% block javascripts %}\n    {% do assets.addJs('theme://js/gallery.js', 100) %}\n    {{ parent() }}\n{% endblock %}\n
"},{"location":"cookbook/general-recipes/#povtorno-ispolzovat-stranitsu-ili-modulnyi-kontent-na-drugoi-stranitse","title":"\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435","text":"

\u0423 \u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0431\u043b\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u0430.

\u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u043f\u043b\u0430\u0433\u0438\u043d Grav Page Inject Plugin \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432.

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435\u043c \u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e - \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0438\u043c\u044f, \u044d\u0442\u043e \u0438\u043c\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \"modular_reuse\" \u0438 \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 templates/modular_ \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e. \u0432 \u043f\u0430\u043f\u043a\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.

modular_reuse.html.twig \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443:

{{ page.content }}\n
\u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0433\u0434\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u00ab\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u00bb. \u0418\u043c\u044f \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u044b\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f - \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b - \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430: \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430:

{% include 'modular_reuse.html.twig' with {'page': page.find('/test-page/amazing-offers')} %}\n
\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f:
{% include 'modular/modular_reuse.html.twig' with {'page': page.find('/test-page/_amazing-offers')} %}\n

\u0422\u043e, \u0447\u0442\u043e \u0438\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u00abinclude\u00bb, - \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0448\u0430\u0433\u0430, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432 \u043f\u0430\u043f\u043a\u0435 templates \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 templates/modular \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u041f\u043e\u0441\u043b\u0435 page.find \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0434\u0442\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e. \u041c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 _, \u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b - \u043d\u0435\u0442. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 - \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u043e\u0432\u0430 admin.

The final page should look like this:

---\ntitle: 'Modular Reuse Example'\n---\n\n{% include 'modular/modular_reuse.html.twig' with {'page': page.find('/test-page/_amazing-offers')} %}\n

\u0422\u0435\u043f\u0435\u0440\u044c \u00ab\u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u00bb \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u043d\u043e \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437.

"},{"location":"cookbook/general-recipes/#sozdaite-nastraivaemoe-pole-zashchity-ot-spama-dlia-vashei-kontaktnoi-formy","title":"\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043f\u0430\u043c\u0430 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b","text":"

\u041e\u0431\u044b\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0441\u043f\u0430\u043c\u0430, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u0435-\u043f\u0440\u0438\u043c\u0430\u043d\u043a\u0430, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0430\u043c-\u0431\u043e\u0442\u044b \u043e\u0431\u0445\u043e\u0434\u044f\u0442 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439.

\u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u0442\u0443 \u0431\u044b\u043b\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0443\u0433\u0430\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c, \u043f\u0440\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0437\u0430\u0434\u0430\u0439\u0442\u0435 \u0432\u043e\u043f\u0440\u043e\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442, \u043d\u043e \u0432 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0412 \u0432\u0430\u0448\u0435\u043c Markdown-\u0444\u0430\u0439\u043b\u0435 \u0441 Form-data \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e \u043f\u043e\u043b\u0435:

    - name: personality\n      type: radio\n      label: What is five times eight?\n      options:\n        alaska: 32\n        oklahoma: 40\n        california: 48\n      validate:\n        required: true\n        pattern: \"^oklahoma$\"\n        message: Not quite, try that math again.\n

\u0412\u043e\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c, \u043d\u043e \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u043e\u0432. \u0412\u0430\u0436\u0435\u043d \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0442\u0432\u0435\u0442\u043e\u0432. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u043c; \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u0441\u044c \u0433\u0434\u0435-\u0442\u043e \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435. \u0412\u0430\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0437\u0430 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 (\u043c\u0435\u0442\u043a\u0430\u043c\u0438), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438 \u043e\u0442\u0432\u0435\u0442\u0435.

\u0411\u043e\u0442\u044b \u0432\u0441\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0443\u043c\u043d\u0435\u0435, \u043d\u043e \u043e\u043d\u0438, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0435 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0443\u043c\u043d\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442. \u041c\u044b \u0437\u0430\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u044f\u0442\u044c \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u0441\u0435\u043c\u044c?\u00bb \u0418 \u0434\u0430\u0435\u043c \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430: \u00ab32\u00bb, \u00ab40\u00bb \u0438 \u00ab48\u00bb. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 - \u00ab40\u00bb, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u0431\u043e\u0442\u0430 \u043c\u044b \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u044d\u0442\u0438\u043c \u0447\u0438\u0441\u043b\u0430\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u00abalaska\u00bb, \u00aboklahoma\u00bb \u0438 \u00abcalifornia\u00bb \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u043e\u0442\u044b \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u043d\u0430 \u0438\u0445 \u044f\u0440\u043b\u044b\u043a\u0438, \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a \u0432\u043e\u043f\u0440\u043e\u0441\u0443. \u0412\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u00ab\u0410\u043d\u0430\u043d\u0430\u0441\u00bb \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u00ab\u043c\u0438\u0441\u0441\u0438\u0441\u0438\u043f\u0438\u00bb \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0435\u0433\u043e, \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445.

"},{"location":"cookbook/general-recipes/#otobrazhenie-raznogo-soderzhimogo-robots-txt-dlia-raznykh-sred","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e robots.txt \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0440\u0435\u0434","text":"

\u0412\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d dev.yourdomain.com \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0430\u0439\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0442\u043e\u0433\u043e, \u043d\u0430\u0434 \u0447\u0435\u043c \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435, \u043f\u0435\u0440\u0435\u0434 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 yourdomain.com, \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u0441\u0440\u0435\u0434\u0443. \u0441\u0430\u0439\u0442 \u0432\u0438\u0434\u0435\u043d \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u043f\u043e\u0438\u0441\u043a\u0430.

\u0425\u043e\u0442\u044f \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0449\u0438\u0449\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u0440\u043e\u043b\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c, \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0438 \u0434\u0430\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0442\u043e\u0440\u0430\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448 \u0441\u0430\u0439\u0442. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, Grav \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 txt \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 html, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u044b \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u044b twig \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b.

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 site.yaml, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0431\u0449\u0438\u0442 \u043d\u0430\u0448\u0435\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0443, \u0447\u0442\u043e dev.yourdomain.com - \u044d\u0442\u043e \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.

/user/[dev.yourdomain.com]/config/site.yaml:

environment: dev\n

\u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b robots.txt.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 Grav \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a.

/user/themes/[yourtheme]/templates/robots.txt.twig:

{% if config.site.environment == 'dev' %}\n{% for rule in page.header.dev %}\n{{ rule }}\n{% endfor %}\n\n{% else %}\n{{ page.content }}\n\n{% endif %}\n

\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 /robots.txt \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e robots.txt \u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u043d\u0430\u0448\u0435\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043a\u0430\u043a \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0432\u043c\u0435\u0441\u0442\u043e HTML, \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 Markdown.

/user/pages/robots/robots.md:

---\nroutes:\n  default: /robots.txt\nprocess:\n  markdown: false\n\ndev:\n  - 'User-agent: *'\n  - 'Disallow: /'\n---\n\nUser-agent: *\nDisallow: /backup/\nDisallow: /bin/\nDisallow: /cache/\nDisallow: /grav/\nDisallow: /logs/\nDisallow: /system/\nDisallow: /vendor/\nDisallow: /user/\nAllow: /user/pages/\nAllow: /user/themes/\nAllow: /user/images/\nAllow: /user/plugins/*.css$\nAllow: /user/plugins/*.js$\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0444\u0430\u0439\u043b robots.txt, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c, \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0430\u0439\u0442 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 Disallow: /, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442 \u0435\u0433\u043e \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445.

"},{"location":"cookbook/plugin-recipes/","title":"\u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":""},{"location":"cookbook/plugin-recipes/#retsepty-plaginov","title":"\u0420\u0435\u0446\u0435\u043f\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0446\u0435\u043b\u044b\u0439 \u0440\u044f\u0434 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0438\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 Grav.

"},{"location":"cookbook/plugin-recipes/#na-vykhode-kakoi-to-php-kod-v-shablon-twig","title":"\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e PHP-\u043a\u043e\u0434 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d Twig","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 PHP-\u043a\u043e\u0434 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0412\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Twig \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e PHP \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u0432 \u0432\u0430\u0448\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Twig.

\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432 user/plugins/example \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b:

user/plugins/example/example.php user/plugins/example/example.yaml user/plugins/example/twig/ExampleTwigExtension.php

\u0412 twig/ExampleTwigExtension.php \u0432\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0432\u0435\u0440\u043d\u0435\u0442\u0435 \u0435\u0451 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 exampleFunction().

\u0417\u0430\u0442\u0435\u043c \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig (\u0438\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 Markdown \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 Twig \u0432 Pages) \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0439\u0442\u0435 \u0432\u044b\u0432\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f: {{ example() }}.

\u041e\u0431\u0437\u043e\u0440 \u043e\u043a\u043e\u043d\u0447\u0435\u043d, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0434:

example.php
<?php\n\nnamespace Grav\\Plugin;\n\nuse \\Grav\\Common\\Plugin;\n\nclass ExamplePlugin extends Plugin\n{\n    public static function getSubscribedEvents()\n    {\n        return [\n            'onTwigExtensions' => ['onTwigExtensions', 0]\n        ];\n    }\n\n    public function onTwigExtensions()\n    {\n        require_once(__DIR__ . '/twig/ExampleTwigExtension.php');\n\n        $this->grav['twig']->twig->addExtension(new ExampleTwigExtension());\n    }\n}\n
ExampleTwigExtension.php
<?php\n\nnamespace Grav\\Plugin;\n\nuse Grav\\Common\\Twig\\Extension\\GravExtension;\n\nclass ExampleTwigExtension extends GravExtension\n{\n    public function getName()\n    {\n        return 'ExampleTwigExtension';\n    }\n\n    public function getFunctions(): array\n    {\n        return [\n            new \\Twig_SimpleFunction('example', [$this, 'exampleFunction'])\n        ];\n    }\n\n    public function exampleFunction()\n    {\n        return 'something';\n    }\n}\n

example.yaml:

enabled: true\n

\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0438 \u0432\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.

"},{"location":"cookbook/plugin-recipes/#filtratsiia-taksonomii-s-pomoshchiu-plagina-taxonomylist","title":"\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 taxonomylist","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d Grav \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u0433\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0432\u0430\u0448\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445 \u0432 \u0431\u043b\u043e\u0433\u0435, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0438\u0445 \u0432\u0441\u0435, \u0432\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u044f\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0435\u0433\u043e\u0432).

\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 Grav \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f. \u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 - \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u043b\u0430\u0433\u0438\u043d Grav \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u0435 Grav. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 /yoursite/user/plugins/taxonomylist/templates/partials/taxonomylist.html.twig \u0432 /yoursite/user/themes/yourtheme/templates/partials/taxonomylist.html.twig, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b.

\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430, \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432\u0432\u0435\u0441\u0442\u0438 \u0442\u0440\u0438 \u043d\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435: filter, filterstart \u0438 filterend, \u0433\u0434\u0435

  • filter - \u044d\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0445 \u0442\u0435\u0433\u043e\u0432 (\u0438\u043b\u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c).
  • filterstart - \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0432\u043d\u044b\u043c \u043d\u0443\u043b\u044e. \u042d\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c.
  • filterend - \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0438 \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u044f\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 5, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448 \u0446\u0438\u043a\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u0434\u043e filterend -1.

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 taxonomylist.html.twig \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043d\u0430\u0448\u0435\u0439 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438. \u041a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e {% include %}, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430:

{% if config.plugins.taxonomylist.enabled %}\n    <div class=\"sidebar-content\">\n        <h4>Popular Tags</h4>\n        {% include 'partials/taxonomylist.html.twig' with {'taxonomy':'tag', filter: true, filterstart: 0, filterend: 5} %}\n    </div>\n{% endif %}\n
\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u044f\u0442\u044c \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0442\u0435\u0433\u043e\u0432.

\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u043d\u0430\u0448\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 taxonomylist.html.twig. \u0414\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438, \u0432\u043e\u0442 \u043a\u043e\u0434 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435:

{% set taxlist = taxonomylist.get() %}\n\n{% if taxlist %}\n    <span class=\"tags\">\n        {% for tax,value in taxlist[taxonomy] %}\n            <a href=\"{{ base_url }}/{{ taxonomy }}{{ config.system.param_sep }}{{ tax|e('url') }}\">{{ tax }}</a>\n        {% endfor %}\n    </span>\n{% endif %}\n

\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, filter, filterstart \u0438 filterend), \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0445 \u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

{% set taxlist = taxonomylist.get %}\n\n{% if taxlist %}\n    {% set taxlist_taxonomy = taxlist[taxonomy] %}\n\n    {% if filter %}\n        {% set taxlist_taxonomy = taxlist_taxonomy|slice(filterstart,filterend) %}\n    {% endif %}\n\n    <span class=\"tags\">\n        {% for tax,value in taxlist_taxonomy %}\n            <a href=\"{{ base_url }}/{{ taxonomy }}{{ config.system.param_sep }}{{ tax|e('url') }}\">{{ tax }}</a>\n        {% endfor %}\n    </span>\n{% endif %}\n

\u0417\u0434\u0435\u0441\u044c \u0444\u0430\u0439\u043b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u0438 filter \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a, \u0446\u0438\u043a\u043b for \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 taxonomylist.html.twig, \u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 Twig slice. \u042d\u0442\u043e\u0442 filter, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u0442 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 filterstart) \u0434\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 filterend -1).

\u0415\u0441\u043b\u0438, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 filter \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false \u0438\u043b\u0438 \u043e\u043d\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430, \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438.

"},{"location":"cookbook/plugin-recipes/#dobavlenie-knopki-poiska-v-plagin-simplesearch","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d SimpleSearch","text":"

\u0412\u0430\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d Grav SimpleSearch, \u043d\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u043f\u043e\u043b\u044e. \u041e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u00abEnter\u00bb, \u0447\u0442\u043e\u0431\u044b \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441.

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d Grav SimpleSearch. \u0417\u0430\u0442\u0435\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 /yoursite/user/plugins/simplesearch/templates/partials/simplesearch-searchbox.html.twig \u0432 /yoursite/user/themes/yourtheme/templates/partials/simplesearch-searchbox.html.twig, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b.

\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u0434\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b:

<input type=\"text\" placeholder=\"Search...\" value=\"{{ query }}\" data-search-input=\"{{ base_url }}{{ config.plugins.simplesearch.route}}/query\" />\n<script>\n    jQuery(document).ready(function($) {\n        var input = $('[data-search-input]');\n        input.on('keypress', function(event) {\n            if (event.which == 13 && input.val().length > 3) {\n                event.preventDefault();\n                window.location.href = input.data('search-input') + '{{ config.system.param_sep }}' + input.val();\n            }\n        });\n    });\n</script>\n

\u041f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0435 \u0432\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0432\u0430\u0448 \u0448\u0430\u0431\u043b\u043e\u043d Twig. \u0410\u0442\u0440\u0438\u0431\u0443\u0442 data-search-input \u0445\u0440\u0430\u043d\u0438\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URL \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e http://yoursite/search/query.

\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a jQuery \u043d\u0438\u0436\u0435. \u0417\u0434\u0435\u0441\u044c \u0442\u0435\u0433, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 data-search-input, \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 input. \u0417\u0430\u0442\u0435\u043c \u043a input \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 jQuery .on(). \u041c\u0435\u0442\u043e\u0434 .on() \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u043f\u043e\u043b\u044e <input>). \u0418\u0442\u0430\u043a, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442 (keypress) \u043a\u043b\u0430\u0432\u0438\u0448\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 if \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u043c\u0438:

  1. \u0411\u044b\u043b\u0430 \u043d\u0430\u0436\u0430\u0442\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 Enter: event.which == 13, \u0433\u0434\u0435 13 - \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 Enter \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435.
  2. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u043e\u043b\u0435 \u043f\u043e\u0438\u0441\u043a\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0435\u0445. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0432\u043a\u0443\u0441\u0443, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0432\u0430\u0448\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0439, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.

\u0415\u0441\u043b\u0438 \u043e\u043d\u0438 \u0432\u0435\u0440\u043d\u044b, \u0442\u043e event.preventDefault(); \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0438 Enter \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442 \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u0438\u0441\u043a\u0443. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e http://yoursite/search/query:yourquery. \u041e\u0442\u0441\u044e\u0434\u0430 /yoursite/user/plugins/simplesearch/simplesearch.php \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0438\u0441\u043a, \u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0430\u0439\u043b\u044b Twig \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u0432\u044b\u0432\u043e\u0434\u044f\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.

\u041d\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044e! \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u043e\u0438\u0441\u043a\u0430, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b:

  1. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443
  2. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435 \u043a \u043a\u043d\u043e\u043f\u043a\u0435 \u043c\u0435\u0442\u043e\u0434 .on(), \u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e click \u0432\u043c\u0435\u0441\u0442\u043e keypress

\u042d\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0433\u043e Turret CSS Framework. \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432 \u043a\u043e\u043d\u0446\u0435.

<div class=\"input-group input-group-search\">\n    <input type=\"search\" placeholder=\"Search\" value=\"{{ query }}\" data-search-input=\"{{ base_url }}{{ config.plugins.simplesearch.route}}/query\" >\n    <span class=\"input-group-button\">\n        <button class=\"button\" type=\"submit\">Search</button>\n    </span>\n</div>\n\n<script>\n    jQuery(document).ready(function($) {\n        var input = $('[data-search-input]');\n        var searchButton = $('.button.search');\n\n        input.on('keypress', function(event) {\n            if (event.which == 13 && input.val().length > 3) {\n                event.preventDefault();\n                window.location.href = input.data('search-input') + '{{ config.system.param_sep }}' + input.val();\n            }\n        });\n\n        searchButton.on('click', function(event) {\n            if (input.val().length > 3) {\n                event.preventDefault();\n                window.location.href = input.data('search-input') + '{{ config.system.param_sep }}' + input.val();\n            }\n        });\n    });\n</script>\n

\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b HTML \u0438 class \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b \u0434\u043b\u044f Turret, \u043d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e. \u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 .on() \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u043a\u043d\u043e\u043f\u043a\u0435 \u043f\u043e\u0438\u0441\u043a\u0430, \u043d\u043e \u043e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u043e\u043b\u0435 \u043f\u043e\u0438\u0441\u043a\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0435\u0445 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u0434\u0430 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 if.

\u0412\u043e\u0442 HTML-\u043a\u043e\u0434 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0438 \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432:

Bootstrap

<div class=\"input-group\">\n    <input type=\"text\" class=\"form-control\" placeholder=\"Search for...\">\n    <span class=\"input-group-btn\">\n        <button class=\"btn btn-default\" type=\"button\">Go!</button>\n    </span>\n</div>\n

Materialize

<div class=\"input-field\">\n    <input id=\"search\" type=\"search\" required>\n    <label for=\"search\"><i class=\"material-icons\">search</i></label>\n</div>\n

Pure CSS

<form class=\"pure-form\">\n    <input type=\"text\" class=\"pure-input-rounded\">\n    <button type=\"submit\" class=\"pure-button\">Search</button>\n</form>\n

Semantic UI

<div class=\"ui action input\">\n  <input type=\"text\" placeholder=\"Search...\">\n  <button class=\"ui button\">Search</button>\n</div>\n
"},{"location":"cookbook/plugin-recipes/#iteratsii-po-stranitsam-i-media","title":"\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0438 \u043c\u0435\u0434\u0438\u0430","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f\u043c \u0447\u0435\u0440\u0435\u0437 PHP \u0438/\u0438\u043b\u0438 Twig, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0434 \u043d\u0438\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Grav \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0430 \u043f\u0440\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043c\u0435\u0434\u0438\u0430-\u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u043b\u0430\u0433\u0438\u043d DirectoryListing \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 HTML- \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e - \u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, - \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0435\u0451 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435. \u041c\u0435\u0442\u043e\u0434 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u0435\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0441\u043d\u043e\u0432\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0431\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.

\u041d\u043e \u043e\u0431\u043e \u0432\u0441\u0435\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: \u043f\u0435\u0440\u0432\u044b\u0439 - \u044d\u0442\u043e $route \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 Grav, \u0433\u0434\u0435 \u0435\u0433\u043e \u043d\u0430\u0439\u0442\u0438; \u0432\u0442\u043e\u0440\u043e\u0439 - $mode, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u0443, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u043e \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438\u043b\u0438 \u043f\u043e \u0435\u0451 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c; \u0442\u0440\u0435\u0442\u0438\u0439 - $depth, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. \u041c\u0435\u0442\u043e\u0434 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Page, \u0437\u0430\u0442\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0438 \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u044b \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0434\u0430\u0442\u0435, \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u043c. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 $paths \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0432 Grav \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b, \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043a\u043b\u044e\u0447\u0438 \u0432 \u044d\u0442\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u0443, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 (\u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0435 \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430). \u0412 \u0446\u0438\u043a\u043b\u0435 foreach \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0445, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0432\u0441\u0435 \u043c\u0435\u0434\u0438\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0445. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u0435\u043d, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438\u043b\u0438 \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432, \u0433\u043e\u0432\u043e\u0440\u044f \u044f\u0437\u044b\u043a\u043e\u043c PHP, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0438\u0445 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 Twig \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0441 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u043f\u0430\u043f\u043e\u043a PHP \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f \u0438\u043b\u0438 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f \u0438\u0437-\u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u043f\u0430\u043f\u043a\u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 100 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0443\u0440\u043e\u0432\u043d\u0435\u0439.

<?php\n\n/**\n * Creates page-structure recursively\n * @param string $route Route to page\n * @param integer $depth Reserved placeholder for recursion depth\n * @return array Page-structure with children and media\n */\npublic function buildTree($route, $mode = false, $depth = 0)\n{\n    $page = Grav::instance()['page'];\n    $depth++;\n    $mode = '@page.self';\n    if ($depth > 1) {\n        $mode = '@page.children';\n    }\n    $pages = $page->evaluate([$mode => $route]);\n    $pages = $pages->published()->order('date', 'desc');\n    $paths = array();\n    foreach ($pages as $page) {\n        $route = $page->rawRoute();\n        $path = $page->path();\n        $title = $page->title();\n        $paths[$route]['depth'] = $depth;\n        $paths[$route]['title'] = $title;\n        $paths[$route]['route'] = $route;\n        if (!empty($paths[$route])) {\n            $children = $this->buildTree($route, $mode, $depth);\n            if (!empty($children)) {\n                $paths[$route]['children'] = $children;\n            }\n        }\n        $media = new Media($path);\n        foreach ($media->all() as $filename => $file) {\n            $paths[$route]['media'][$filename] = $file->items()['type'];\n        }\n    }\n    if (!empty($paths)) {\n        return $paths;\n    } else {\n        return null;\n    }\n}\n
"},{"location":"cookbook/plugin-recipes/#plagin-polzovatelskikh-shablonov-twig","title":"\u041f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig","text":"

\u0412\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig.

\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435, - \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d - \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d DevTools. \u0418\u0442\u0430\u043a, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e:

$ bin/gpm install devtools\n

\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b:

$ bin/plugin devtools newplugin\n

\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0438\u043c\u0435\u043d\u0438, \u0430\u0432\u0442\u043e\u0440\u0430 \u0438 \u0442. \u0434. \u0421\u043a\u0430\u0436\u0435\u043c, \u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044d\u0442\u043e Custom Templates, \u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0432 /user/plugins/custom-templates. \u0412\u0441\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441, \u044d\u0442\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b custom-templates.php \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434:

<?php\n\nnamespace Grav\\Plugin;\n\nuse \\Grav\\Common\\Plugin;\n\nclass CustomTemplatesPlugin extends Plugin\n{\n    /**\n     * Subscribe to required events\n     *\n     * @return array\n     */\n    public static function getSubscribedEvents()\n    {\n        return [\n            'onTwigTemplatePaths' => ['onTwigTemplatePaths', 0]\n        ];\n    }\n\n    /**\n     * Add current directory to twig lookup paths.\n     */\n    public function onTwigTemplatePaths()\n    {\n        $this->grav['twig']->twig_paths[] = __DIR__ . '/templates';\n    }\n}\n

\u042d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onTwigTemplatePaths(), \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u043f\u043a\u0443 user/plugins/custom-templates/templates \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u043f\u0443\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Twig \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c.

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d Twig \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c foo.html.twig, \u0438 \u0442\u043e\u0433\u0434\u0430 \u043b\u044e\u0431\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c foo.md \u0441\u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d.

\u042d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u043f\u0443\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043a \u043a\u043e\u043d\u0446\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u0443\u0442\u0435\u0439 \u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0443 Twig. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u0435\u043c\u0430 (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0432\u043e\u0439) \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043d\u0430\u0434 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u0434 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c, \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043c\u0435\u0442\u043e\u0434 \u0441\u043e\u0431\u044b\u0442\u0438\u044f:

<?php\n\n/**\n * Add current directory to twig lookup paths.\n*/\npublic function onTwigTemplatePaths()\n{\n    array_unshift($this->grav['twig']->twig_paths, __DIR__ . '/templates');\n}\n
"},{"location":"cookbook/plugin-recipes/#ispolzovanie-kesha-v-vashikh-sobstvennykh-plaginakh","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u044d\u0448\u0430 \u0432 \u0432\u0430\u0448\u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445","text":"

\u041f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u044d\u0448 Grav \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u044d\u0448\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435.

\u042d\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0430\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:

<?php\n\n$cache = Grav::instance()['cache'];\n$id = 'myplugin-data'\n$list = [];\n\nif ($data = $cache->fetch($id)) {\n    return $data;\n} else {\n    $data = $this->gatherData();\n    $cache->save($hash, $data);\n    return $data;\n}\n

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u044d\u0448\u0430 Grav, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043b\u0438 \u043d\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0436\u0435 \u0432 \u043a\u044d\u0448\u0435 ($data = $cache->fetch($id)). \u0415\u0441\u043b\u0438 $data \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u0435\u0433\u043e \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.

\u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0430 \u043a\u044d\u0448\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 null, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u043d\u0435 \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 ($data = $this->gatherData()), \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u0430 ($cache->save($hash, $data)).

"},{"location":"cookbook/plugin-recipes/#obuchenie-na-primere","title":"\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435","text":"

\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043e\u0431\u0438\u043b\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0435\u0441\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0441\u0432\u043e\u0438 \u043e\u0442\u0432\u0435\u0442\u044b \u0433\u0434\u0435-\u0442\u043e \u0432 \u0438\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. \u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442, \u043a\u0430\u043a \u0438\u0445 \u0440\u0435\u0448\u0430\u0442\u044c.

\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441 \u0433\u043b\u0430\u0432\u043e\u0439 \u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b Grav!

"},{"location":"cookbook/plugin-recipes/#kak-ia-mogu-chitat-i-zapisyvat-dannye-v-failovuiu-sistemu","title":"\u041a\u0430\u043a \u044f \u043c\u043e\u0433\u0443 \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443?","text":"

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443.

  • \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a \u0434\u0430\u043d\u043d\u044b\u043c YAML, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d Import.
  • \u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 - \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 RocketTheme\\Toolbox\\File.
  • \u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0432\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SQLite.
  • \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 - \u044d\u0442\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043b\u0430\u0433\u0438\u043d \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432.
  • \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f
    • Table Importer
    • Thumb Ratings
    • Webmention
"},{"location":"cookbook/plugin-recipes/#kak-sdelat-dannye-iz-plagina-dostupnymi-dlia-twig","title":"\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0434\u043b\u044f Twig?","text":"

\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u2014 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d config.plugins.X. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 $this->config->set(), \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432:

  • ipLocate
  • Count Views

\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u043c\u0443 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig \u0447\u0435\u0440\u0435\u0437 {{ config.plugins.X.whatever.variable }}.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 grav['twig']:

  • Blogroll, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u044b \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 \u0432\u0430\u0448 \u0448\u0430\u0431\u043b\u043e\u043d.

\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0432\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430.

"},{"location":"cookbook/plugin-recipes/#kak-ia-mogu-vvesti-markdown-na-stranitsu","title":"\u041a\u0430\u043a \u044f \u043c\u043e\u0433\u0443 \u0432\u0432\u0435\u0441\u0442\u0438 Markdown \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443?","text":"

\u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c Grav, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0445\u0443\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 Markdown, \u2014 onPageContentRaw. \u0421\u0430\u043c\u044b\u0439 \u0440\u0430\u043d\u043d\u0438\u0439 \u0438\u0437 \u043d\u0438\u0445, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, onPageInitialized. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c $this->grav['page']->rawMarkdown(), \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e $this->grav['page']->setRawContent(). \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u044d\u0442\u043e:

  • Page Inject
  • Table Importer
"},{"location":"cookbook/plugin-recipes/#kak-mne-vnedrit-html-v-konechnyi-rezultat","title":"\u041a\u0430\u043a \u043c\u043d\u0435 \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c HTML \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442?","text":"

\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0432\u0435\u0441\u0442\u0438 HTML \u0438 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f onOutputGenerated. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c $this->grav->output.

  • \u041c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Shortcode Core.
  • \u041f\u043b\u0430\u0433\u0438\u043d\u044b Pubmed \u0438 Tablesorter \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0433\u0440\u0443\u0431\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434.
"},{"location":"cookbook/plugin-recipes/#kak-mne-vnedrit-takie-resursy-kak-faily-javascript-i-css","title":"\u041a\u0430\u043a \u043c\u043d\u0435 \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u0430\u043a \u0444\u0430\u0439\u043b\u044b JavaScript \u0438 CSS?","text":"

\u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Grav\\Common\\Assets.

  • Google Analytics
  • Bootstrapper
  • Gravstrap
  • Tablesorter
"},{"location":"cookbook/plugin-recipes/#kak-ia-mogu-povliiat-na-zagolovki-otvetov-i-kody-otvetov","title":"\u041a\u0430\u043a \u044f \u043c\u043e\u0433\u0443 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0438 \u043a\u043e\u0434\u044b \u043e\u0442\u0432\u0435\u0442\u043e\u0432?","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 php header() \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u043e\u0442\u0432\u0435\u0442\u043e\u0432. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, - \u044d\u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f onOutputGenerated, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0443. \u0421\u0430\u043c \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 YAML \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (http_response_code).

  • \u041f\u043b\u0430\u0433\u0438\u043d Graveyard \u043f\u043b\u0430\u0433\u0438\u043d \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u044b 404 NOT FOUND \u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u044b 410 GONE \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a YAML.
  • \u041f\u043b\u0430\u0433\u0438\u043d Webmention \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a Location \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 201 CREATED.
"},{"location":"cookbook/plugin-recipes/#kak-vkliuchit-storonnie-biblioteki-v-svoi-plagin","title":"\u041a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0441\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d?","text":"

\u041e\u0431\u044b\u0447\u043d\u043e \u0432\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 vendor \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 \u0435\u0433\u043e autoload.php \u0442\u0430\u043c, \u0433\u0434\u0435 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435. (\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Git, \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 subtrees)

  • Shortcode Core
  • Table Importer
"},{"location":"cookbook/plugin-recipes/#kak-mne-rasshirit-twig","title":"\u041a\u0430\u043a \u043c\u043d\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c Twig?","text":"

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 - \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u0443 Custom Twig Filter/Function \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0420\u0435\u0446\u0435\u043f\u0442\u044b Twig.

\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0447\u0442\u0438\u0442\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e Twig \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d TwigPCRE, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0432 Grav.

"},{"location":"cookbook/plugin-recipes/#kak-mne-vzaimodeistvovat-s-vneshnimi-api","title":"\u041a\u0430\u043a \u043c\u043d\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 API?","text":"

Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 Grav\\Common\\GPM\\Response, \u043d\u043e \u043d\u0438\u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0432\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0442\u043e\u0433\u043e \u043f\u043e\u0436\u0435\u043b\u0430\u0435\u0442\u0435.

  • ipLocate
  • Pubmed
"},{"location":"cookbook/tutorials/create-a-blog/","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u043b\u043e\u0433\u0430","text":""},{"location":"cookbook/tutorials/create-a-blog/#sozdanie-bloga","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u043b\u043e\u0433\u0430","text":"

\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u0435\u043b\u0435\u0442 \u0431\u043b\u043e\u0433\u0430 \u0438\u0437 https://getgrav.org/downloads/skeletons, \u0438\u043b\u0438, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0441\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c https://github.com/getgrav/grav-skeleton-blog-site. \u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0430\u0439\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0435\u043c\u0443 Antimatter. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0431\u043b\u043e\u0433\u0430, \u043d\u0435\u0441\u043e\u043c\u043d\u0435\u043d\u043d\u043e, \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0441\u0442\u0440\u044f\u043b\u0438 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435.

"},{"location":"cookbook/tutorials/create-a-blog/#proverte-chto-vasha-tema-predostavliaet-shablony-stranits-bloga-i-elementov","title":"\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u043b\u043e\u0433\u0430 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432","text":"

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e: \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u043b\u043e\u0433\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Antimatter, TwentyFifteen, Deliver, Lingonberry, Afterburner2 \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435. \u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u0435 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u043b\u043e\u0433\u0430? \u0417\u0430\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 /user/themes/[yourtheme]/templates \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 blog.html.twig \u0438 item.html.twig.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0442\u0435\u043c\u0443, \u0438 \u0432\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0438\u0445 \u0438\u0437 Antimatter: https://github.com/getgrav/grav-theme-antimatter/tree/develop/templates

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u043e\u0439. \u041b\u0443\u0447\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0435\u0441\u043b\u0438 \u0432\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0435, - \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u0438\u0434\u0435\u0442 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435.

"},{"location":"cookbook/tutorials/create-a-blog/#sozdaite-strukturu-stranits-bloga","title":"\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u043b\u043e\u0433\u0430","text":"

\u0415\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043f\u0440\u043e\u0449\u0435 - \u0438\u043c\u0435\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u0438\u043f\u0430 Blog \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0431\u043b\u043e\u0433\u0430.

"},{"location":"cookbook/tutorials/create-a-blog/#s-plaginom-adminki","title":"\u0421 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0442\u0438\u043f\u0430 Blog. \u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \"\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\" \u0431\u043b\u043e\u0433\u0430 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0431\u043b\u043e\u0433\u0430.

\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0442\u0438\u043f\u0430 Item. \u042d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435.

"},{"location":"cookbook/tutorials/create-a-blog/#vruchnuiu","title":"\u0412\u0440\u0443\u0447\u043d\u0443\u044e","text":"

\u0417\u0430\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0432\u043e\u044e \u043f\u0430\u043f\u043a\u0443 pages/, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 01.blog (\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043d\u043e\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043c\u0435\u043d\u044e), \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043d\u0435\u0435 \u0444\u0430\u0439\u043b blog.md. \u0412 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:

---\ncontent:\n    items: '@self.children'\n---\n

\u042d\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Grav \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435).

\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0444\u0430\u0439\u043b item.md \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435.

"},{"location":"cookbook/tutorials/create-a-blog/#url-adresa","title":"URL-\u0430\u0434\u0440\u0435\u0441\u0430","text":"

\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432\u044b\u0448\u0435, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u0433\u0430 \u0441 /blog/ \u0432 URL-\u0430\u0434\u0440\u0435\u0441\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u0435\u0441\u043b\u0438 \u0431\u043b\u043e\u0433 - \u044d\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435, \u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0431\u043b\u043e\u0433\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u0412 \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0438\u043c\u0435\u043b \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443, \u0430 \u043d\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u043b \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u0439 \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433.

\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 system.yaml (\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435) \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 home.hide_in_urls (\u0421\u043a\u0440\u044b\u0442\u044c home \u0432 URL-\u0430\u0434\u0440\u0435\u0441\u0430\u0445) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true.

"},{"location":"cookbook/tutorials/create-a-blog/#vnutrenniaia-rabota","title":"\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0440\u0430\u0431\u043e\u0442\u0430","text":"

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0428\u0430\u0431\u043b\u043e\u043d \u0431\u043b\u043e\u0433\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 blog.html.twig, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 templates/ \u0442\u0435\u043c\u044b, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431:

{% set collection = page.collection() %}\n\n{% for child in collection %}\n    {% include 'partials/blog_item.html.twig' with {'blog':page, 'page':child, 'truncate':true} %}\n{% endfor %}\n

page.collection() \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e content.items \u0438\u0437 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 YAML \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e.

\u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:

---\ncontent:\n    items: '@self.children'\n---\n

\u0442\u043e\u0433\u0434\u0430 collection \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0435\u043c\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0447\u0430\u0441\u0442\u044c partials/blog_item.html.twig, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0443\u044e \u0437\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435, \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0435\u043c\u0443 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u043e\u0433\u0435 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.

"},{"location":"cookbook/tutorials/create-a-blog/#uznat-bolshe","title":"\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435","text":"
  • \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438
  • \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430-\u043b\u0438\u0441\u0442\u0438\u043d\u0433
  • \u041f\u0430\u043f\u043a\u0438
  • \u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f
"},{"location":"cookbook/twig-recipes/","title":"\u0420\u0435\u0446\u0435\u043f\u0442\u044b Twig","text":""},{"location":"cookbook/twig-recipes/#retsepty-twig","title":"\u0420\u0435\u0446\u0435\u043f\u0442\u044b Twig","text":"

\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0438\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439 Twig.

"},{"location":"cookbook/twig-recipes/#perechislenie-poslednikh-5-soobshchenii-v-bloge","title":"\u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 5 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0431\u043b\u043e\u0433\u0435","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 5 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0431\u043b\u043e\u0433\u0435 \u043d\u0430 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0433 \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435.

\u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 /blog, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0435\u0451 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u0435 \u0438\u0445 \u043f\u043e \u0434\u0430\u0442\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043f\u0435\u0440\u0432\u044b\u0435 5 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435:

<ul>\n    {% for post in page.find('/blog').published.order('date', 'desc').slice(0, 5) %}\n        <li class=\"recent-posts\">\n            <strong><a href=\"{{ post.url }}\">{{ post.title }}</a></strong>\n        </li>\n    {% endfor %}\n</ul>\n

\u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

twig_first: true\nprocess:\n    twig: true\n
"},{"location":"cookbook/twig-recipes/#dobavlenie-nemodulnykh-navigatsionnykh-ssylok","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 \u043d\u0435\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

<div class=\"desktop-nav__navigation\">\n    {% for page in pages.children %}\n        {% if page.visible %}\n            {% set current_page = (page.active or page.activeChild) ? 'active' : '' %}\n            <a class=\"desktop-nav__nav-link {{ current_page }}\" href=\"{{ page.url }}\">\n                {{ page.menu }}\n            </a>\n        {% endif %}\n    {% endfor %}\n</div>\n
"},{"location":"cookbook/twig-recipes/#perechislenie-postov-v-bloge-za-god","title":"\u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u043e\u0432 \u0432 \u0431\u043b\u043e\u0433\u0435 \u0437\u0430 \u0433\u043e\u0434","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u0432 \u044d\u0442\u043e\u043c \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u043c \u0433\u043e\u0434\u0443.

\u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 /blog, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0435\u0451 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0439\u0442\u0435 \u043f\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 dateRange() \u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u0435 \u0438\u0445 \u043f\u043e \u0434\u0430\u0442\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044f:

<ul>\n    {% set this_year = \"now\"|date('Y') %}\n    {% for post in page.find('/blog').children.dateRange('01/01/' ~ this_year, '12/31/' ~ this_year).order('date', 'desc') %}\n        <li class=\"recent-posts\">\n            <strong><a href=\"{{ post.url }}\">{{ post.title }}</a></strong>\n        </li>\n    {% endfor %}\n</ul>\n
"},{"location":"cookbook/twig-recipes/#otobrazhenie-perevedennogo-mesiatsa","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430","text":"

\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0438\u043b\u044c\u0442\u0440 Twig date, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b/\u043c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u043e\u0441\u0442\u044c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0442 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e, \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043c\u0435\u0441\u044f\u0446 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0435\u0441\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d \u0432\u044b\u0431\u0435\u0440\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0441\u044f\u0446\u0430.

\u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.

"},{"location":"cookbook/twig-recipes/#pervyi-podkhod","title":"\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434","text":"

\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Twig intl.

\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 https://github.com/Perlkonig/grav-plugin-twig-extensions. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 PHP intl.

\u0412 \u0432\u0430\u0448\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 (\u043a\u0430\u043a \u0432 \u0442\u0435\u043c\u0435 Antimatter) {{ page.date | date (\" M \") }} \u043d\u0430 {{ page.date | localizeddate ('long', 'none', 'it', 'Europe / Rome', 'MMM')}} (\u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c \u0441\u0432\u043e\u0439 \u044f\u0437\u044b\u043a \u0438 \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441)

"},{"location":"cookbook/twig-recipes/#vtoroi-podkhod","title":"\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434","text":"

\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0432 \u043f\u0430\u043f\u043a\u0435 user/languages\u200b\u200b/ \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c en.yaml, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u0430\u043f\u0438\u0441\u044c:

MONTHS_OF_THE_YEAR: [January, February, March, April, May, June, July, August, September, October, November, December]\n

\u0418 ru.yaml:

MONTHS_OF_THE_YEAR: [\u042f\u043d\u0432\u0430\u0440\u044c, \u0424\u0435\u0432\u0440\u0430\u043b\u044c, \u041c\u0430\u0440\u0442, \u0410\u043f\u0440\u0435\u043b\u044c, \u041c\u0430\u0439, \u0418\u044e\u043d\u044c, \u0418\u044e\u043b\u044c, \u0410\u0432\u0433\u0443\u0441\u0442, \u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c, \u041e\u043a\u0442\u044f\u0431\u0440\u044c, \u041d\u043e\u044f\u0431\u0440\u044c, \u0414\u0435\u043a\u0430\u0431\u0440\u044c]\n

\u0422\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Twig:

<li>\n    <a href='{{ post.url }}'><aside class=\"dates\">{{ 'GRAV.MONTHS_OF_THE_YEAR'|ta(post.date|date('n') - 1) }} {{ post.date|date('d') }}</aside></a>\n    <a href='{{ post.url }}'>{{ post.title }}</a>\n</li>\n

\u042d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 Grav Twig |ta, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 Translate Array. \u0412 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0438\u043c:

An Example Post  July 2015\n

\u0410 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c:

\u0421\u0442\u0430\u0442\u044c\u044f-\u043f\u0440\u0438\u043c\u0435\u0440  \u0418\u044e\u043b\u044c 2015\n
"},{"location":"cookbook/twig-recipes/#otobrazhenie-soderzhimogo-stranitsy-bez-tizera","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0435\u0437 \u0442\u0438\u0437\u0435\u0440\u0430","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0435\u0437 \u0442\u0438\u0437\u0435\u0440\u0430 \u0432\u0432\u0435\u0440\u0445\u0443.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0438\u043b\u044c\u0442\u0440 slice, \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0438\u0437\u0435\u0440 \u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

{% set content = page.content|slice(page.summary|length) %}\n{{ content }}\n
"},{"location":"cookbook/twig-recipes/#skrytie-imeila-ot-spam-botov","title":"\u0421\u043a\u0440\u044b\u0442\u0438\u0435 \u0438\u043c\u0435\u0439\u043b\u0430 \u043e\u0442 \u0441\u043f\u0430\u043c-\u0431\u043e\u0442\u043e\u0432","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043a\u0440\u044b\u0442\u044c \u0438\u043c\u0435\u0439\u043b \u043e\u0442 \u0441\u043f\u0430\u043c-\u0431\u043e\u0442\u043e\u0432

\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 Twig \u0432 \u0448\u0430\u043f\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

process:\n    twig: true\n

\u0417\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0438\u043b\u044c\u0442\u0440 Twig safe_email:

<a href=\"mailto:{{'your.email@server.com'|safe_email}}\">\n  Email me\n</a>\n
"},{"location":"cookbook/twig-recipes/#vybor-sluchainogo-elementa-iz-perevedennogo-massiva","title":"\u0412\u044b\u0431\u043e\u0440 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u0437 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430","text":"

\u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442, \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439.

\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0442\u0430\u043a\u0436\u0435, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0432 \u043f\u0430\u043f\u043a\u0435 user/languages\u200b\u200b/ \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c en.yaml, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u0430\u043f\u0438\u0441\u044c:

FRUITS: [Banana, Cherry, Lemon, Lime, Strawberry, Raspberry]\n

\u0418 ru.yaml:

FRUITS: [\u0411\u0430\u043d\u0430\u043d, \u0412\u0438\u0448\u043d\u044f, \u041b\u0438\u043c\u043e\u043d, \u041b\u0430\u0439\u043c, \u041a\u043b\u0443\u0431\u043d\u0438\u043a\u0430, \u041c\u0430\u043b\u0438\u043d\u0430]\n

\u0422\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Twig:

{% set langobj  = grav['language'] %}\n{% set curlang  = langobj.getLanguage() %}\n{% set fruits   = langobj.getTranslation(curlang,'FRUITS',true) %}\n<span data-ticker=\"{{ fruits|join(',') }}\">{{ random(fruits) }}</span>\n
"},{"location":"cookbook/twig-recipes/#otobrazhenie-izobrazheniia-zagruzhennogo-v-pole-faila","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u043e\u043b\u0435 \u0444\u0430\u0439\u043b\u0430","text":"

\u0412\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u043e\u043b\u0435 \u0442\u0438\u043f\u0430 file \u0432 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0442\u0435\u0436 \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u044d\u0442\u043e \u043f\u043e\u043b\u0435.

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u043b\u0435 file \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043e\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u0432\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 - \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 - \u044d\u0442\u043e \u0433\u0440\u0443\u043f\u043f\u0430 \u0441\u0432\u043e\u0439\u0441\u0442\u0432/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.

\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u0431\u0438\u0440\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u043e\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435 filepicker, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u0435\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f:

{{ page.media[header.yourfilefield|first.name] }}\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0432\u0430\u0448\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u043d\u0430 Twig \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:

{% for imagesuploaded in page.header.yourfilefield %}\n{{ page.media[imagesuploaded.name] }}\n{% endfor %}\n
"},{"location":"cookbook/twig-recipes/#otobrazhenie-izobrazheniia-vybrannogo-v-pole-mediapicker","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u043e\u043b\u0435 mediapicker","text":"

\u0412\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u043e\u043b\u0435 mediapicker \u0432 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0442\u0435\u0436 \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435.

\u041f\u043e\u043b\u0435 mediapicker \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0447\u0435\u0440\u0442\u0435\u0436\u0443, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435:

header.myimage:\n  type: mediapicker\n  folder: 'self@'\n  label: Select a file\n  preview_images: true\n

\u041f\u043e\u043b\u0435 mediapicker \u0445\u0440\u0430\u043d\u0438\u0442 \u043f\u0443\u0442\u044c \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a /home/background.jpg. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u043c\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c:

  • \u043f\u0443\u0442\u044c \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u044d\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435
  • \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 Twig, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442:

{% set image_parts = pathinfo(header.myimage) %}\n{% set image_basename = image_parts.basename %}\n{% set image_page = image_parts.dirname == '.' ? page : page.find(image_parts.dirname) %}\n\n{{ image_page.media[image_basename].html()|raw }}\n
"},{"location":"cookbook/twig-recipes/#polzovatelskii-filtr-funktsiia-twig","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440/\u0444\u0443\u043d\u043a\u0446\u0438\u044f Twig","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0432 Twig, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 PHP, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0438\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Twig. \u0424\u0438\u043b\u044c\u0442\u0440 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a \u0441\u0442\u0440\u043e\u043a\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435: \"\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430\"|custom_filter, \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439: custom_function(\"some string\"), \u043d\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u043e\u043d\u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \"some string\"|custom_filter('foo', 'bar'), \u0433\u0434\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u0418 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442: custom_function(\"some string\", 'foo', 'bar').

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 Twig \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u0434\u0443\u0431\u043b\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0435\u0451 \u043d\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u043c. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u0449\u0435\u0439, \u043a\u0430\u043a \u043d\u043e\u043c\u0435\u0440\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0445 \u043a\u0430\u0440\u0442, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438 \u0442. \u0434.

\u041b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c - \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0432 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u0445\u043e\u0442\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0435\u0451 \u0432 php-\u0444\u0430\u0439\u043b \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d DevTools, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u0441\u0442\u0435\u0440\u0430:

bin/gpm install devtools\n

\u0417\u0430\u0442\u0435\u043c \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u0432\u0435\u0441\u0442\u0438 \u0441\u0432\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.

bin/plugin devtools new-plugin\n\nEnter Plugin Name: ACME Twig Filters\nEnter Plugin Description: Plugin for custom Twig filters\nEnter Developer Name: ACME, Inc.\nEnter GitHub ID (can be blank):\nEnter Developer Email: hello@acme.com\n\nSUCCESS plugin ACME Twig Filters -> Created Successfully\n\nPath: /Users/joe/grav/user/plugins/acme-twig-filters\n

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e\u0442 \u0441\u043a\u0435\u043b\u0435\u0442\u043d\u044b\u0439 \u043a\u0430\u0440\u043a\u0430\u0441 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u043d\u0430 \u0432\u0430\u0448\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onPageContentRaw(). \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onTwigInitialized():

<?php\n\npublic function onPluginsInitialized()\n{\n    // Don't proceed if we are in the admin plugin\n    if ($this->isAdmin()) {\n        return;\n    }\n\n    // Enable the main event we are interested in\n    $this->enable([\n        'onTwigInitialized' => ['onTwigInitialized', 0]\n    ]);\n}\n\n/**\n * @param Event $e\n */\npublic function onTwigInitialized(Event $e)\n{\n\n}\n

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 onTwigInitialized():

<?php\n\n/**\n * @param Event $e\n */\npublic function onTwigInitialized(Event $e)\n{\n    $this->grav['twig']->twig()->addFilter(\n        new \\Twig_SimpleFilter('chunker', [$this, 'chunkString'])\n    );\n}\n

\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u0435\u0442\u043e\u0434\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 chunker \u043a\u0430\u043a \u0438\u043c\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430, \u0430 chunkString \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434 PHP, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0430. \u0418\u0442\u0430\u043a, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

<?php\n\n/**\n * Break a string up into chunks\n */\npublic function chunkString($string, $chunksize = 4, $delimiter = '-')\n{\n    return (trim(chunk_split($string, $chunksize, $delimiter), $delimiter));\n}\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0441\u0432\u043e\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 Twig \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

{{ \"ER27XV3OCCDPRJK5IVSDME6D6OT6QHK5\"|chunker }}\n

\u0427\u0442\u043e \u0434\u0430\u0441\u0442:

ER27-XV3O-CCDP-RJK5-IVSD-ME6D-6OT6-QHK5\n

\u0438\u043b\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

{{ \"ER27XV3OCCDPRJK5IVSDME6D6OT6QHK5\"|chunker(8, '|') }}\n

\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0441\u0442:

ER27XV3O|CCDPRJK5|IVSDME6D|6OT6QHK5\n

\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0444\u0438\u043b\u044c\u0442\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e Twig \u0441 \u0442\u0435\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u0435\u043c \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 onTwigInitialized():

<?php\n\n/**\n * @param Event $e\n */\npublic function onTwigInitialized(Event $e)\n{\n    $this->grav['twig']->twig()->addFilter(\n        new \\Twig_SimpleFilter('chunker', [$this, 'chunkString'])\n    );\n    $this->grav['twig']->twig()->addFunction(\n        new \\Twig_SimpleFunction('chunker', [$this, 'chunkString'])\n    );\n}\n

\u0418 \u0442\u043e\u0433\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:

{{ chunker(\"ER27XV3OCCDPRJK5IVSDME6D6OT6QHK5\", 8, '|') }}\n
"},{"location":"cookbook/twig-recipes/#rasshirenie-bazovogo-shablona-unasledovannoi-temy","title":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u044b","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0441\u0430\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438, \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Quark \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0442\u0435\u043c\u044b, \u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0444\u0430\u0439\u043b themes/quark/templates/partials/base.html.twig \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u043e\u0439 myTheme.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c Quark \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d Twig, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0435\u043c\u0443 my-theme.php \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f onTwigLoader \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Quark. \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0438\u043c:

<?php\n\nnamespace Grav\\Theme;\n\nuse Grav\\Common\\Grav;\nuse Grav\\Common\\Theme;\n\nclass MyTheme extends Quark {\n    public static function getSubscribedEvents() {\n        return [\n            'onTwigLoader' => ['onTwigLoader', 10]\n        ];\n    }\n\n    public function onTwigLoader() {\n        parent::onTwigLoader();\n\n        // add quark theme as namespace to twig\n        $quark_path = Grav::instance()['locator']->findResource('themes://quark');\n        $this->grav['twig']->addPath($quark_path . DIRECTORY_SEPARATOR . 'templates', 'quark');\n    }\n}\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 themes/my-theme/templates/partials/base.html.twig \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d Quark \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

    {% extends '@quark/partials/base.html.twig' %}\n\n    {% block header %}\n    This is a new extended header.\n    {% endblock %}\n
"},{"location":"forms/","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":""},{"location":"forms/#formy","title":"\u0424\u043e\u0440\u043c\u044b","text":"

\u0412 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0444\u043e\u0440\u043c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430.

"},{"location":"forms/blueprints/","title":"\u041e\u0431\u0437\u043e\u0440","text":""},{"location":"forms/blueprints/#chertezhi","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438","text":""},{"location":"forms/blueprints/#chto-takoe-chertezh","title":"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0447\u0435\u0440\u0442\u0435\u0436?","text":"

\u0427\u0435\u0440\u0442\u0435\u0436\u0438 \u2014 \u0432\u0430\u0436\u043d\u044b\u0439 \u0430\u0441\u043f\u0435\u043a\u0442 Grav. \u041f\u043e \u0441\u0443\u0442\u0438, \u043e\u043d\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c Grav. \u041e\u043d\u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 Grav, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0442\u0435\u043c\u0430 \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d, \u0435\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0433\u0434\u0435 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 GitHub \u0438 \u0442. \u0434. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 Grav.

Blueprint \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 YAML \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c.

\u041f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Grav \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u043c\u0438. \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043e\u043d\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442, \u043a\u0430\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0430\u0439\u0442\u0430. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044f \u0441\u0432\u043e\u0438 \u0442\u0435\u043c\u044b \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Grav \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 YAML \u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0441 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u0442\u0435\u043c\u044b \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u042d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0440\u0435\u0441\u0443\u0440\u0441, \u0433\u0434\u0435 Grav \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u0431\u044d\u043a\u0435\u043d\u0434\u0435.

"},{"location":"forms/blueprints/#tipy-chertezhei","title":"\u0422\u0438\u043f\u044b \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439","text":"

Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0434\u043b\u044f:

  • \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0442\u0435\u043c\u044b \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445.
  • \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b/\u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.
  • \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.
  • \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0438\u00bb.
  • \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 flex-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438/\u043e\u0431\u044a\u0435\u043a\u0442\u044b.

\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 Grav.

"},{"location":"forms/blueprints/#temy-i-plaginy","title":"\u0422\u0435\u043c\u044b \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b","text":"

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441 \u0442\u0435\u043c\u0430\u043c\u0438 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043f\u0430\u043a\u0435\u0442 blueprints.yaml. \u042d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 Grav \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0435\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443 Grav.

\u0424\u0430\u0439\u043b blueprints.yaml \u2014 \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0442\u0435\u043c\u044b \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b GPM (Grav Package Manager). GPM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0445\u0440\u0430\u043d\u044f\u0449\u0443\u044e\u0441\u044f \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.

\u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043c\u044b \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0435\u043c\u0441\u044f \u0432 \u043f\u043b\u0430\u043d \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Assets. \u042d\u0442\u043e\u0442 \u043f\u043b\u0430\u043d \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u043c\u044f, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0430\u0432\u0442\u043e\u0440\u0435, \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430, \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043e\u0442\u0447\u0451\u0442 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442 Grav, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043d\u043e \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.

\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430, \u0434\u0430\u043b\u0435\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 Blueprint \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0444\u043e\u0440\u043c\u0430\u0445. \u042d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u044b \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 Grav. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c.

\u0424\u0430\u0439\u043b blueprints.yaml \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430 YAML \u043f\u043b\u0430\u0433\u0438\u043d\u0430 (\u043f\u0440\u0438\u043c\u0435\u0440: assets.yaml). \u0427\u0435\u0440\u0442\u0451\u0436 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0430 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b YAML \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b YAML \u0437\u0430\u0442\u0435\u043c \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b user/config \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Grav, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Grav.

\u041f\u043e \u0441\u0443\u0442\u0438, \u043a\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u043e \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0444\u0430\u0439\u043b blueprints.yaml \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0435\u0433\u043e, \u0430 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b YAML \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0432\u0430\u043c, \u043d\u0430 \u0447\u0442\u043e \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d.

"},{"location":"forms/blueprints/#stranitsy","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

Grav Pages \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0435\u043c \u0443\u0433\u043e\u0434\u043d\u043e. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0431\u043b\u043e\u0433\u0430, \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u0432 \u0431\u043b\u043e\u0433\u0435, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430, \u0433\u0430\u043b\u0435\u0440\u0435\u0435\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0442. \u0434.

\u0427\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0447\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u043a\u0430\u043a \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u2014 \u044d\u0442\u043e \u0447\u0435\u0440\u0442\u0435\u0436 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446: \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435. \u042d\u0442\u043e \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u0430 Grav.

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043c\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c.

\u0422\u0435\u043c\u0430 Grav \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0430\u044f \u0438 \u043c\u043e\u0449\u043d\u0430\u044f, \u0447\u0435\u043c \u0442\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445.

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u0435\u043c\u0430\u043c \u0431\u044b\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043d\u0430 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0446\u0435\u043b\u0435\u0439:

  • \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0442\u043e\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0447\u0438\u0442\u0430\u0435\u0442\u0435.
  • \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u043c\u0435\u0440\u0446\u0438\u0438.
  • \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u043b\u043e\u0433.
  • \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0430\u0439\u0442-\u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e.

\u0422\u0435\u043c\u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0445 \u0432\u0441\u0435, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0442\u043e\u043d\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0446\u0435\u043b\u0438, \u043c\u043e\u0436\u0435\u0442 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0442\u044c \u044d\u0442\u0443 \u0446\u0435\u043b\u044c \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u043e\u0431\u0449\u0430\u044f \u0442\u0435\u043c\u0430.

\u0424\u0430\u0439\u043b \u043f\u043e\u0434\u043a\u0430\u0447\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u043f\u0443\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 blog.md, default.md \u0438\u043b\u0438 form.md.

\u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e\u0434\u043a\u0430\u0447\u043a\u0438. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430.

\u0428\u0430\u0431\u043b\u043e\u043d, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u00ab\u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434\u00bb \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0435\u0433\u043e, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0432\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u043e\u043b\u044f, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u0445\u043e\u0434\u044b \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0438.

\u041a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c: \u0432 \u0441\u0432\u043e\u0435\u0439 \u0442\u0435\u043c\u0435 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 blueprints/ \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u0430\u0439\u043b YAML \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0430\u043c\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b blog, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u0430\u0439\u043b blueprints/blog.yaml. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0432 \u0442\u0435\u043c\u0435 Antimatter.

"},{"location":"forms/blueprints/#komponenty-chertezhei","title":"\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439","text":"

\u0412 \u0444\u0430\u0439\u043b\u0435 blueprints.yaml \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u0432\u0430 \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u041f\u0435\u0440\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u044d\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0432\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u2014 \u043e \u0444\u043e\u0440\u043c\u0430\u0445. \u0412\u0441\u044f \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 blueprints.yaml, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438 \u0442\u0435\u043c\u044b.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0430\u0441\u0442\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430 ** blueprints.yaml **:

name: GitHub\nslug: github\ntype: plugin\nversion: 1.0.1\ndescription: \"This plugin wraps the [GitHub v3 API](https://developer.github.com/v3/) and uses the [php-github-api](https://github.com/KnpLabs/php-github-api/) library to add a nice GitHub touch to your Grav pages.\"\nicon: github\nauthor:\n  name: Team Grav\n  email: devs@getgrav.org\n  url: https://getgrav.org\nhomepage: https://github.com/getgrav/grav-plugin-github\nkeywords: github, plugin, api\nbugs: https://github.com/getgrav/grav-plugin-github/issues\nlicense: MIT\n

\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0434\u0435\u0441\u044c, \u044d\u0442\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0435\u0433\u043e \u0438\u043c\u044f, \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0430\u0432\u0442\u043e\u0440\u0435, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e, \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0438 URL-\u0430\u0434\u0440\u0435\u0441\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u043c \u0438\u0437 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u043d\u0438\u0436\u0435.

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u2014 \u044d\u0442\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0444\u043e\u0440\u043c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043d\u0430 \u043f\u0430\u0440\u0443 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u044b\u0448\u0435. \u042d\u0442\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0444\u043e\u0440\u043c\u044b \u0438 \u043f\u043e\u043b\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u0437 Grav Admin. \u0412\u043e\u0442 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0444\u0430\u0439\u043b\u0430 blueprints.yaml.

form:\n  validation: strict\n  fields:\n    enabled:\n        type: toggle\n        label: Plugin status\n        highlight: 1\n        default: 1\n        options:\n            1: Enabled\n            0: Disabled\n        validate:\n            type: bool\n

\u0412 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0444\u0430\u0439\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c Plugin Status, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 (\u043d\u0430 \u0444\u043e\u0442\u043e \u043d\u0438\u0436\u0435).

"},{"location":"forms/blueprints/#otladka-chertezhei","title":"\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439","text":"

\u041e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c.

\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c CLI-\u043a\u043e\u043c\u0430\u043d\u0434\u0443 bin/grav yamllinter \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u0447\u0451\u0442\u0430 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0432 yaml-\u0444\u0430\u0439\u043b\u0430\u0445. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043e\u0446\u0435\u043d\u0438\u043c\u0443\u044e \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 yaml-\u0444\u0430\u0439\u043b\u043e\u0432.

"},{"location":"forms/blueprints/advanced-features/","title":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439","text":""},{"location":"forms/blueprints/advanced-features/#rasshirennye-vozmozhnosti-chertezhei","title":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439","text":"

\u0412 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 \u0435\u0441\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0438\u0445 \u0438 \u0438\u043c\u0435\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u043b\u044f.

"},{"location":"forms/blueprints/advanced-features/#opredelenie-pravil-proverki","title":"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u0441\u0432\u043e\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e.

rules:\n  slug:\n    pattern: \"[a-z][a-z0-9_\\-]+\"\n    min: 2\n    max: 80\nform:\n  fields:\n    folder:\n      type: text\n      label: Folder Name\n      validate:\n        rule: slug\n

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u043e slug, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u0435 \u043f\u0430\u043f\u043a\u0438 \u0444\u043e\u0440\u043c\u044b.

"},{"location":"forms/blueprints/advanced-features/#rasshirenie-bazovogo-tipa-extends","title":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430 (extends@)","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0447\u0435\u0440\u0442\u0451\u0436, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0447\u0435\u0440\u0442\u0435\u0436\u0435.

extends@: default\n

\u0412 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430:

extends@:\n  type: default\n  context: blueprints://pages\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0441\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u0435\u0441\u043b\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0430.

extends@: parent@\n

\u041d\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c. \u041f\u043e\u043b\u044f, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0447\u0435\u0440\u0442\u0435\u0436\u0435, \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043b\u044e\u0431\u044b\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u043c\u0438 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u043c\u0438 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435.

extends@:\n  - parent@\n  - type: default\n    context: blueprints://pages\n
"},{"location":"forms/blueprints/advanced-features/#ponimanie-svoistv-tipa-i-konteksta","title":"\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0442\u0438\u043f\u0430 \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430","text":"

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 type \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0444\u0430\u0439\u043b, \u0430 context \u2014 \u043d\u0430 \u043f\u0443\u0442\u044c. \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e context \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u041f\u043e\u0442\u043e\u043a\u0438, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435.

context: blueprints:// \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c /user/plugins/admin/blueprints, \u043f\u0430\u043f\u043a\u0443 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. type: default \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u0430\u0441\u0442 default.yaml. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0438 \u0434\u0432\u0430 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435, \u043e\u043d\u0438 \u0434\u0430\u044e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 Grav: /user/plugins/admin/blueprints/default.yaml.

\u0412\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0432 \u044d\u0442\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 ://, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u043e\u043d \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u043e\u0442\u043e\u043a\u0443. \u0418 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 context \u044d\u0442\u043e\u0442 \u043f\u043e\u0442\u043e\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b.

"},{"location":"forms/blueprints/advanced-features/#forma-vstraivaniia-import","title":"\u0424\u043e\u0440\u043c\u0430 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f (import@)","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0438\u043b\u0438 \u043f\u043e\u0434\u0444\u043e\u0440\u043c \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0444\u043e\u0440\u043c\u0430\u043c\u0438.

\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c blueprints://partials/gallery.yaml, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u043d\u0430\u0448\u0443 \u0444\u043e\u0440\u043c\u0443:

form:\n  fields:\n    gallery.images:\n      type: list\n      label: Images\n      fields:\n        .src:\n          type: text\n          label: Image\n

\u0412 \u043d\u0430\u0448\u0435\u0439 \u0444\u043e\u0440\u043c\u0435 \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0430\u043b\u0435\u0440\u0435\u0438:

form:\n  fields:\n    images:\n        type: section\n        title: Images\n        underline: true\n        import@:\n          type: partials/gallery\n          context: blueprints://\n

\u0425\u043e\u0442\u044f YAML \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043b\u044e\u0447 import@ \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0432\u044b \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435 @, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 import@1,import@2 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0427\u0438\u0441\u043b\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u0440\u043e\u043c\u0435 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0430\u0440\u0441\u0435\u0440\u0430 YAML:

form:\n  fields:\n    images:\n        type: section\n        title: Images\n        underline: true\n        import@1:\n          type: partials/gallery\n          context: blueprints://\n        import@2:\n          type: partials/another-gallery\n          context: blueprints://\n
"},{"location":"forms/blueprints/advanced-features/#udalenie-polei-svoistv-unset","title":"\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 / \u0441\u0432\u043e\u0439\u0441\u0442\u0432 (unset-*@)","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e unset@: true. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044f, \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0438\u043c\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: unset-options@ \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.

"},{"location":"forms/blueprints/advanced-features/#zamena-polei-svoistv-replace","title":"\u0417\u0430\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u0435\u0439 / \u0441\u0432\u043e\u0439\u0441\u0442\u0432 (replace-*@)","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432. \u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0447\u0438\u0441\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u043b\u0435, \u0432\u0430\u0448\u0435 \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 replace@:

author.name:\n  replace@: true\n  type: text\n  label: Author name\n

\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 author.name \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:type \u0438 label \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0430 \u0438\u043c\u0435\u043b\u0430 \u0440\u0430\u043d\u044c\u0448\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432:

summary.enabled:\n  replace-options@: true\n  options:\n    0: Yeah\n    1: Nope\n    2: Do not care\n

\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: replace-*@ \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u043c \u0434\u043b\u044f unset-*@.

"},{"location":"forms/blueprints/advanced-features/#ispolzovanie-konfiguratsii-config","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (config-*@)","text":"

\u0411\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Grav. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432 \u043f\u043e\u043b\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u044b\u043b \u0443\u043a\u0430\u0437\u0430\u043d \u0430\u0432\u0442\u043e\u0440 \u0441\u0430\u0439\u0442\u0430:

form:\n  fields:\n    author:\n      type: text\n      label: Author\n      config-default@: site.author.name\n

\u0415\u0441\u043b\u0438 \u0438\u043c\u044f \u0430\u0432\u0442\u043e\u0440\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 - John Doe, \u0444\u043e\u0440\u043c\u0430 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u0430:

form:\n  fields:\n    author:\n      type: text\n      label: Author\n      default: \"John Doe\"\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c config-*@ \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043f\u043e\u043b\u044f; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0435 type, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043c\u0435\u0442\u044c config-type @: site.forms.author.type, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0438\u043f \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0438\u0437 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.

"},{"location":"forms/blueprints/advanced-features/#ispolzovanie-vyzovov-funktsii-data","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (data-*@)","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438\u0437 \u0432\u0430\u0448\u0438\u0445 \u0447\u0435\u0440\u0442\u0435\u0436\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u043e\u043b\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u043e\u0442\u0430\u0446\u0438\u044e data-*@: \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043b\u044e\u0447\u0430, \u0433\u0434\u0435 * - \u044d\u0442\u043e \u0438\u043c\u044f \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0445\u043e\u0442\u0438\u043c \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0451 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u043b\u0438, \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443 Grav

form:\n  fields:\n    route:\n      type: select\n      label: Parent\n      classes: fancy\n      data-default@: '\\Grav\\Plugin\\Admin::route'\n      data-options@: '\\Grav\\Common\\Page\\Pages::parentsRawRoutes'\n      options:\n        '/': '- Root -'\n

\u0415\u0441\u043b\u0438 \u0431\u044b \u0432\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0447\u043b\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u0431\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

form:\n  fields:\n    route:\n      type: select\n      label: Parent\n      classes: fancy\n      default: /team\n      options:\n        '/': '- Root -'\n        '/home': 'Home'\n        '/team': 'Team'\n        '/team/ceo': '  Meet Our CEO'\n        ...\n

\u0425\u043e\u0442\u044f data-default@: \u0438 data-options@:, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u043b\u0435\u0439, \u0432\u044b \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u0438\u043c\u0438. \u041d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0432\u043a\u043b\u044e\u0447\u0430\u044f type, label, validate \u0438 \u0434\u0430\u0436\u0435 fields \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u043e\u043b\u0435.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0430\u0441\u0441\u0438\u0432, \u0433\u0434\u0435 \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u0438\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0442:

  data-default@: ['\\Grav\\Theme\\ImaginaryClass::getMyDefault', 'default', false]\n
"},{"location":"forms/blueprints/advanced-features/#izmenenie-poriadka-polei","title":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043f\u043e\u043b\u0435\u0439","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0435 \u043f\u043b\u0430\u043d \u0438\u043b\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0444\u0430\u0439\u043b, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0435\u0446 \u0441\u043f\u0438\u0441\u043a\u0430. \u0418\u043d\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044f.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e ordering@. \u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u043c\u044f \u043f\u043e\u043b\u044f \u0438\u043b\u0438 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e (-1 = \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442).

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440:

form:\n  fields:\n    route:\n      ordering@: -1\n      type: select\n      label: Parent\n      classes: fancy\n      default: /team\n      options:\n        '/': '- Root -'\n        '/home': 'Home'\n        '/team': 'Team'\n        '/team/ceo': '  Meet Our CEO'\n        ...\n

\u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u043e\u043b\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0435. \u042d\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442 \u0438 / \u0438\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044f \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c.

\u0412\u043e\u0442 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440:

form:\n  fields:\n    author:\n      ordering@: header.title\n      type: text\n      label: Author\n      default: \"John Doe\"\n

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0438\u043c\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0435\u0433\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0435 author \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u044f title \u0432 \u0444\u043e\u0440\u043c\u0435.

\u041f\u0440\u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0430\u043c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u0435\u0439 \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c header, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: header.title, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.

"},{"location":"forms/blueprints/advanced-features/#sozdanie-novogo-tipa-polia-formy","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

<?php\n/**\n * Get list of form field types specified in this plugin. Only special types needs to be listed.\n *\n * @return array\n */\npublic function getFormFieldTypes()\n{\n    return [\n        'display' => [\n            'input@' => false\n        ],\n        'spacer' => [\n            'input@' => false\n        ]\n    ];\n}\n

\u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u0426\u0435\u043b\u044c \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 - \u0434\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u0434 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0438\u043f\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043f\u0430\u0440\u044b \u043a\u043b\u044e\u0447: \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a data-options@, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043a \u043f\u043e\u043b\u044f\u043c.

"},{"location":"forms/blueprints/advanced-features/#onblueprintcreated-ili-dostup-k-dannym-chertezha","title":"onBlueprintCreated \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0447\u0435\u0440\u0442\u0435\u0436\u0430","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043f\u043e\u043b\u0435\u0439 \u0441 \u0442\u043e\u0447\u043a\u0430\u043c\u0438, \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0438\u0437 \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0442\u0430\u0446\u0438\u044f / \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u043e\u0442\u0430\u0446\u0438\u0438 ..

<?php\n$tabs = $blueprint->get('form/fields/tabs');\n

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u044f\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

<?php\n$name = $blueprint->get('form/fields/content.name');\n$name = $blueprint->get('form/fields/content/fields/.name');\n

\u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c (\u0442\u0440\u0435\u0442\u044c\u0435\u043c) \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 set() \u0438 get().

<?php\n$tabs = $blueprint->get('form/fields/tabs', null, '/');\n
"},{"location":"forms/blueprints/example-config-blueprints/","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438","text":""},{"location":"forms/blueprints/example-config-blueprints/#primer-chertezhi-konfiguratsii","title":"\u041f\u0440\u0438\u043c\u0435\u0440: \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438","text":"

\u041e\u0431\u044b\u0447\u043d\u043e \u0432 site.yaml \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441\u0430\u0439\u0442\u0430.

\u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0439 \u0432 user/blueprints/config/site.yaml. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

extends@: '@parent'\n\nform:\n  fields:\n    content:\n      fields:\n        myfield:\n          type: text\n          label: My Field\n

\u0414\u043e\u0431\u0430\u0432\u0438\u0442 \u0442\u0438\u043f \u0432\u0432\u043e\u0434\u0430 \u00ab\u041c\u043e\u0435 \u043f\u043e\u043b\u0435\u00bb, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0435\u0433\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u00ab\u041a\u043e\u043d\u0442\u0435\u043d\u0442\u00bb \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0430\u0439\u0442\u0430.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0446\u0435\u043b\u044b\u0435 \u043d\u043e\u0432\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

extends@: '@parent'\n\nform:\n  fields:\n    anothersection:\n      type: section\n      title: Another Section\n      underline: true\n\n      fields:\n        myfield:\n          type: text\n          label: A label\n          size: large\n
"},{"location":"forms/blueprints/example-page-blueprint/","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":""},{"location":"forms/blueprints/example-page-blueprint/#primer-chertezhi-stranits","title":"\u041f\u0440\u0438\u043c\u0435\u0440: \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446","text":"

\u0427\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442\u0441\u044f \u043e\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0434\u0430\u044e\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u041f\u043e \u0441\u0443\u0442\u0438, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0432\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430 100% \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u0430\u043a \u043e\u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.

"},{"location":"forms/blueprints/example-page-blueprint/#primer-pervyi","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0432\u044b\u0439","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0430\u0440\u0443 \u043f\u043e\u043b\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

\u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f:

title: Gallery\n'@extends':\n    type: default\n    context: blueprints://pages\n\nform:\n  fields:\n    tabs:\n      type: tabs\n      active: 1\n\n      fields:\n        advanced:\n          fields:\n            overrides:\n              fields:\n                header.an_example_text_field:\n                  type: text\n                  label: Add a number\n                  default: 5\n                  validate:\n                    required: true\n                    type: int\n

\u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043d\u043e\u0432\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0413\u0430\u043b\u0435\u0440\u0435\u044f \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438.

title: Gallery\n'@extends':\n    type: default\n    context: blueprints://pages\n\nform:\n  fields:\n    tabs:\n      type: tabs\n      active: 1\n\n      fields:\n        gallery:\n          type: tab\n          title: Gallery\n\n          fields:\n            header.an_example_text_field:\n              type: text\n              label: Add a number\n              default: 5\n              validate:\n                required: true\n                type: int\n\n            header.an_example_select_box:\n              type: select\n              label: Select one of the following\n              default: one\n              options:\n                one: One\n                two: Two\n                three: Three\n

\u0422\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432 \u0433\u043b\u0430\u0432\u0435 \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435

"},{"location":"forms/blueprints/example-page-blueprint/#kak-imenovat-polia","title":"\u041a\u0430\u043a \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044f","text":"

\u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 header.*, \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u044f \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"forms/blueprints/example-page-blueprint/#sozdaite-polnostiu-nastraivaemuiu-formu-stranitsy","title":"\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

title: Gallery\n\nform:\n  fields:\n    tabs:\n      type: tabs\n      active: 1\n\n      fields:\n        gallery:\n          type: tab\n          title: Gallery\n\n          fields:\n            header.an_example_text_field:\n              type: text\n              label: Add a number\n              default: 5\n              validate:\n                required: true\n                type: int\n\n            header.an_example_select_box:\n              type: select\n              label: Select one of the following\n              default: one\n              options:\n                one: One\n                two: Two\n                three: Three\n\n            route:\n              type: parents\n              label: PLUGIN_ADMIN.PARENT\n              classes: fancy\n

\u041f\u043e\u043b\u0435 route \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u0432 Grav 1.7. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e type: parents.

"},{"location":"forms/blueprints/example-page-blueprint/#primechanie-dlia-ekspertnogo-rezhima","title":"\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430","text":"

\u041f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Expert \u0447\u0435\u0440\u0442\u0435\u0436 \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f, \u0438 \u0444\u043e\u0440\u043c\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u043e\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043f\u043e\u043b\u0435 Frontmatter, \u0438 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438.

"},{"location":"forms/blueprints/example-page-blueprint/#gde-razmestit-chertezhi-stranitsy","title":"\u0413\u0434\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0427\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0438, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b \u043d\u043e\u0432\u044b\u0435 \u0442\u0438\u043f\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.

"},{"location":"forms/blueprints/example-page-blueprint/#v-polzovatelskoi-papke-blueprints","title":"\u0412 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 Blueprints","text":"

\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0438\u0445 \u0432 user/blueprints/pages/. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448\u0438 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435.

"},{"location":"forms/blueprints/example-page-blueprint/#v-teme","title":"\u0412 \u0442\u0435\u043c\u0435","text":"

\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0438\u0445 \u0432 user/themes/YOURTHEME/blueprints/. \u042d\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u044e \u0442\u0435\u043c\u0443: \u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0438 \u0435\u0451 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.

"},{"location":"forms/blueprints/example-page-blueprint/#v-papke-data","title":"\u0412 \u043f\u0430\u043f\u043a\u0435 Data","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0442\u0435\u043c\u0443 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Gantry5, \u043b\u0443\u0447\u0448\u0435\u0435 \u043c\u0435\u0441\u0442\u043e - user/data/gantry5/themes/YOURTHEME/blueprints/, \u0438\u043d\u0430\u0447\u0435 \u0432\u0430\u0448\u0438 \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u044b.

"},{"location":"forms/blueprints/example-page-blueprint/#v-plagine","title":"\u0412 \u043f\u043b\u0430\u0433\u0438\u043d\u0435","text":"

\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0438\u0445 \u0432 user/plugins/YOURPLUGIN/blueprints/. \u042d\u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u043a\u0443\u0434\u0430 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043f\u043b\u0430\u0433\u0438\u043d.

\u0417\u0430\u0442\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0448\u0438\u0442\u0435\u0441\u044c \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onGetPageBlueprints \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0438\u0445 \u0432 Grav. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 blueprints/.

<?php\n\npublic static function getSubscribedEvents()\n{\n  return [\n    'onGetPageBlueprints' => ['onGetPageBlueprints', 0]\n\n  ];\n}\n\npublic function onGetPageBlueprints($event)\n{\n  $types = $event->types;\n  $types->scanBlueprints('plugins://' . $this->name . '/blueprints');\n}\n
"},{"location":"forms/blueprints/example-plugin-blueprint/","title":"\u0427\u0435\u0440\u0442\u0435\u0436 \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":""},{"location":"forms/blueprints/example-plugin-blueprint/#primer-chertezh-plagina","title":"\u041f\u0440\u0438\u043c\u0435\u0440: \u0447\u0435\u0440\u0442\u0435\u0436 \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":"

\u0427\u0435\u0440\u0442\u0435\u0436 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u0430\u0435\u0442 Grav \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043b\u0430\u0433\u0438\u043d, \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0438 \u0430\u0432\u0442\u043e\u0440\u0435, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432 Grav Admin.

\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u043e\u0442 \u0447\u0435\u0440\u0442\u0435\u0436 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430:

name: Assets\nslug: assets\ntype: plugin\nversion: 1.0.4\ndescription: \"This plugin provides a convenient way to add CSS and JS assets directly from your pages.\"\nicon: list-alt\nauthor:\n  name: Team Grav\n  email: devs@getgrav.org\n  url: https://getgrav.org\nhomepage: https://github.com/getgrav/grav-plugin-assets\ndemo: https://learn.getgrav.org\nkeywords: assets, javascript, css, inline\nbugs: https://github.com/getgrav/grav-plugin-assets/issues\nlicense: MIT\n\ndependencies:\n  - { name: afterburner2 }\n  - { name: github }\n  - { name: email, version: '~2.0' }\n

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0435\u043c\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0443 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u0434\u0440\u0443\u0433\u0438\u0435 - \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b.

\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 name* \u042d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430. \u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438\u043b\u0438 \u0442\u0435\u043c, \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. slug* \u042d\u0442\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0440\u0435\u0441\u0443\u0440\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user/plugins/__slug__ type* \u042d\u0442\u043e \u0442\u0438\u043f \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e plugin, \u043b\u0438\u0431\u043e theme version* \u0412\u0435\u0440\u0441\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u043e\u043c. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 semver. description* \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0439\u0442\u0435 200 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u0438\u043c \u0438 \u043f\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Markdown. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432 \u0446\u0438\u0442\u0430\u0442\u0443 marks. icon* \u0417\u043d\u0430\u0447\u043e\u043a - \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 getgrav.org. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0437\u043d\u0430\u0447\u043a\u043e\u0432 FontAwesome, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043b\u0438 \u0442\u0435\u043c\u0443, \u0432\u0430\u0448\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u043c\u0438 \u0437\u043d\u0430\u0447\u043e\u043a \u0435\u0449\u0451 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u0437\u0430 \u0432\u0430\u0441. screenshot (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0421\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c\u0430\u043c\u0438 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438. \u0414\u043b\u044f \u0442\u0435\u043c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0441\u043d\u0438\u043c\u043a\u0430 \u044d\u043a\u0440\u0430\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0442\u0435\u043c\u043e\u0439 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: screenshot.jpg). \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 screenshot.jpg \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e. \u041d\u0430\u0448 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0431\u0435\u0440\u0435\u0442 \u0435\u0433\u043e. author.name* \u0424\u0418\u041e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 author.email (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. author.url (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. homepage (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u043d\u0435\u0433\u043e. docs (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0451 \u0437\u0434\u0435\u0441\u044c. demo (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0435\u043c\u043e-\u0432\u0435\u0440\u0441\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0435\u0451 \u0437\u0434\u0435\u0441\u044c. guide (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0443\u0447\u0435\u0431\u043d\u044b\u0435 \u043f\u043e\u0441\u043e\u0431\u0438\u044f \u0438\u043b\u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0438\u0445 \u0437\u0434\u0435\u0441\u044c. keywords (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0425\u043e\u0442\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438\u0445 \u0437\u0434\u0435\u0441\u044c, \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0432 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438. bugs (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) URL-\u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub issues \u0441\u0441\u044b\u043b\u043a\u0430. license (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0422\u0438\u043f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 (MIT, GPL \u0438 \u0442. \u0434.). \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0430\u0439\u043b LICENSE \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u0430\u0448\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c. dependencies (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0421\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0443/\u0442\u0435\u043c\u0435. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0438\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f GPM, \u043e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f GIT, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f. \u0422\u0430\u043a\u0436\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043c\u0430\u0441\u0441\u0438\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u044f\u0432\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u043c\u044f \u0438 \u0432\u0435\u0440\u0441\u0438\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0441\u0442\u0438\u043b\u0435 Composer gpm (\u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 GPM. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f GPM \u0434\u043b\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a GPM.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 GitHub:

name: GitHub\nslug: github\ntype: plugin\nversion: 1.0.1\ndescription: \"This plugin wraps the [GitHub v3 API](https://developer.github.com/v3/) and uses the [php-github-api](https://github.com/KnpLabs/php-github-api/) library to add a nice GitHub touch to your Grav pages.\"\nicon: github\nauthor:\n  name: Team Grav\n  email: devs@getgrav.org\n  url: https://getgrav.org\nhomepage: https://github.com/getgrav/grav-plugin-github\nkeywords: github, plugin, api\nbugs: https://github.com/getgrav/grav-plugin-github/issues\nlicense: MIT\n

\u0427\u0435\u0440\u0442\u0435\u0436\u0438 \u0442\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443.

"},{"location":"forms/blueprints/example-plugin-configuration/","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":""},{"location":"forms/blueprints/example-plugin-configuration/#primer-konfiguratsiia-plagina","title":"\u041f\u0440\u0438\u043c\u0435\u0440: \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":"

\u041c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438/\u0438\u043b\u0438 \u0442\u0435\u043c\u044b.

\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u043b\u0438 \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 (\u0438\u043b\u0438 \u0442\u0435\u043c\u044b) \u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b blueprints.yaml \u0444\u043e\u0440\u043c\u0430\u043c\u0438.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0444\u0430\u0439\u043b archives.yaml \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Archives:

enabled: true\nbuilt_in_css: true\ndate_display_format: 'F Y'\nshow_count: true\nlimit: 12\norder:\n    by: date\n    dir: desc\nfilter_combinator: and\nfilters:\n    category: blog\n

\u042d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0411\u0435\u0437 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0443 /user/config/plugins/ \u0438 \u0438\u0445 \u0442\u0443\u0434\u0430.

\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b blueprints.yaml, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u0437 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f, \u043e\u043d\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 /user/config/plugins/archives.yaml (\u0438\u043b\u0438 \u0432 config/themes, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0435\u043c\u0430). \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

name: Archives\nversion: 1.3.0\ndescription: The **Archives** plugin creates links for pages grouped by month/year\nicon: university\nauthor:\n  name: Team Grav\n  email: devs@getgrav.org\n  url: https://getgrav.org\nhomepage: https://github.com/getgrav/grav-plugin-archives\ndemo: http://demo.getgrav.org/blog-skeleton\nkeywords: archives, plugin, blog, month, year, date, navigation, history\nbugs: https://github.com/getgrav/grav-plugin-archives/issues\nlicense: MIT\n\nform:\n  validation: strict\n  fields:\n

\u0410 \u0432\u043e\u0442 \u0438 \u0442\u0430 \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430. \u041a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044e \u0432 \u0444\u0430\u0439\u043b\u0435 archives.yaml \u043d\u0443\u0436\u0435\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0444\u043e\u0440\u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c

enabled:\n  type: toggle\n  label: Plugin status\n  highlight: 1\n  default: 1\n  options:\n      1: Enabled\n      0: Disabled\n  validate:\n       type: bool\n

\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u044b\u0431\u043e\u0440\u0430

date_display_format:\n  type: select\n  size: medium\n  classes: fancy\n  label: Date Format\n  default: 'jS M Y'\n  options:\n    'F jS Y': \"January 1st 2014\"\n    'l jS of F': \"Monday 1st of January\"\n    'D, m M Y': \"Mon, 01 Jan 2014\"\n    'd-m-y': \"01-01-14\"\n    'jS M Y': \"10th Feb 2014\"\n

\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435

limit:\n  type: text\n  size: x-small\n  label: Count Limit\n  validate:\n    type: number\n    min: 1\n

\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 (\u0432 \u044d\u0442\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 enabled, date_display_format, limit) - \u044d\u0442\u043e \u0438\u043c\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0433\u043e \u0442\u0438\u043f (type), \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440 (size), \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u043c\u0435\u0442\u043a\u0430 (label) \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 (help). default \u0438 placeholder \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.

\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f select \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438 \u0441\u043f\u0438\u0441\u043e\u043a options.

\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0447\u0435\u0447\u043d\u0443\u044e \u043d\u043e\u0442\u0430\u0446\u0438\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, order.dir)

order.dir:\n  type: toggle\n  label: Order Direction\n  highlight: asc\n  default: desc\n  options:\n    asc: Ascending\n    desc: Descending\n

\u041f\u043b\u0430\u0433\u0438\u043d Admin \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0432 plugins/admin/themes/grav/templates/forms/fields.

\u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 form.validation \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 strict, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Archives, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0444\u043e\u0440\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u043d\u0430\u0447\u0435 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0443 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0430 \u043d\u0435 \u0432\u0441\u0435 \u0438\u0437 \u043d\u0438\u0445, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 form.validation \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 loose.

"},{"location":"forms/blueprints/fields-available/","title":"\u0427\u0435\u0440\u0442\u0435\u0436 \u043f\u043e\u043b\u0435\u0439 \u0444\u043e\u0440\u043c\u044b","text":""},{"location":"forms/blueprints/fields-available/#ssylka-chertezh-polei-formy","title":"\u0421\u0441\u044b\u043b\u043a\u0430: \u0447\u0435\u0440\u0442\u0435\u0436 \u043f\u043e\u043b\u0435\u0439 \u0444\u043e\u0440\u043c\u044b","text":""},{"location":"forms/blueprints/fields-available/#dostupnye-polia-formy-dlia-ispolzovaniia-v-adminke","title":"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435","text":"

\u0424\u043e\u0440\u043c\u044b \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u043e\u043b\u0435\u0439. \u042d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.

\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u043d\u0438\u0436\u0435 \u043f\u043e\u043b\u044f\u043c, \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u043b\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0445 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u0421\u043f\u0440\u0430\u0432\u043a\u0435 \u043f\u043e \u043f\u043e\u043b\u044f\u043c \u0444\u043e\u0440\u043c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430.

"},{"location":"forms/blueprints/fields-available/#spetsialnye-polia-formy-dostupnye-tolko-v-adminke","title":"\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435","text":"\u041f\u043e\u043b\u0435 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Array \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 BackupHistory Blueprint Colorpicker \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u043b\u0438\u0442\u0440\u0443 \u0446\u0432\u0435\u0442\u043e\u0432 Columns \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 Column \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043b\u0435\u043c Columns) Cron CronStatus Dateformat \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443/\u0432\u0440\u0435\u043c\u044f \u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 Datetime \u043f\u043e\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 Editor \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Markdown Elements \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430/\u0441\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u00ab\u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430\u00bb. \u042d\u0442\u043e \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043a\u0430, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f Fieldset \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043a\u043b\u0430\u0434\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u043e\u0440\u0434\u0435\u043e\u043d\u0430 File \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 File \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c (\u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445). \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0444\u0430\u0439\u043b\u0430 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0438 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b/\u043f\u043b\u0430\u0433\u0438\u043d\u0430 Filepicker Filepicker \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. Frontmatter IconPicker List \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u043f\u043e\u043b\u0435\u0439 Markdown MediaPicker Multilevel Order PageMedia PageMediaSelect \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u043f\u043e\u043b\u044e. Pages \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u0430\u0439\u0442\u0430 Parents Permissions Range Section \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u044b; \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c Selectize \u0433\u0438\u0431\u0440\u0438\u0434 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0438 \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0433\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. SelectUnique Taxonomy \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0439 ThemeSelect UserInfo Xss"},{"location":"forms/blueprints/fields-available/#obshchie-atributy-polei","title":"\u041e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u043e\u043b\u0435\u0439","text":"

\u041a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u043b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u043b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u0445 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0432 \u043f\u043e\u043b\u0435 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f.

\u042d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0449\u0443\u044e \u043e\u0441\u043d\u043e\u0432\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044f.

\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 autocomplete \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 on \u0438\u043b\u0438 off autofocus \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0430\u0432\u0442\u043e\u0444\u043e\u043a\u0443\u0441 \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u043b\u0435 classes \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 CSS \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f default \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043b\u0438\u0431\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043b\u0438\u0431\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 placeholder disabled \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043b\u044f help \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0443 \u043a \u043f\u043e\u043b\u044e id \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 for \u0434\u043b\u044f \u043c\u0435\u0442\u043a\u0438 label \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043a\u0443 \u043f\u043e\u043b\u044f name \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u043c\u044f \u043f\u043e\u043b\u044f novalidate \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00abnovalidate\u00bb placeholder \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u043f\u043e\u043b\u044f. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0443 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e. \u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 default. readonly \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u00ab\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\u00bb size \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 \u0432 \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: large, x-small, medium, long, small. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435. style \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0438\u043b\u044c \u043f\u043e\u043b\u044f. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0430 vertical, \u043f\u043e\u043b\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0441\u044e \u0448\u0438\u0440\u0438\u043d\u0443. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443. title \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043f\u043e\u043b\u044f toggleable \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u043b\u0430\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043f\u043e\u043b\u044f validate.required \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435 \u043a\u0430\u043a \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 validate.pattern \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 validate.message \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0431\u043e\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 validate.type \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0442\u0438\u043f \u043f\u043e\u043b\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438"},{"location":"forms/blueprints/fields-available/#khotite-znat-bolshe","title":"\u0425\u043e\u0442\u0438\u0442\u0435 \u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435?","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f, \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0445: \u041f\u043e\u043b\u044f, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u044b \u0438 \u041f\u043e\u043b\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435.

"},{"location":"forms/blueprints/fields-available/#validatsiia","title":"\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f","text":"

\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0435\u0439 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e.

validate:\n    required: true\n

\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e\u043b\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043e \u043a\u0430\u043a \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435.

validate:\n    message: 'Some message'\n

\u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0435 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.

validate:\n    pattern: 'Some pattern'\n

\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u043c\u0435\u0440\u044b: pattern: \"[1-9][0-9]*\", pattern: '[A-Za-z0-9-]+', pattern: '[a-z0-9-]+', pattern: '^[a-z0-9_-]{3,16}$', pattern: '(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,}'

"},{"location":"forms/blueprints/fields-available/#validate-type","title":"validate.type","text":"

validate.type \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u0442\u0438\u043f\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443.

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b:

\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a textarea:

content:\n    type: editor\n    validate:\n      type: textarea\n

Selectize \u0431\u0443\u0434\u0435\u0442 commalist:

taxonomies:\n    type: selectize\n    size: large\n    label: PLUGIN_ADMIN.TAXONOMY_TYPES\n    classes: fancy\n    help: PLUGIN_ADMIN.TAXONOMY_TYPES_HELP\n    validate:\n        type: commalist\n\nfilters.category:\n  type: selectize\n  label: Category filter\n  help: Comma separated list of category names\n  validate:\n    type: commalist\n

\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b:

author.email:\n    type: text\n    size: large\n    label: PLUGIN_ADMIN.DEFAULT_EMAIL\n    help: PLUGIN_ADMIN.DEFAULT_EMAIL_HELP\n    validate:\n        type: email\n

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c:

summary.enabled:\n    type: toggle\n    label: PLUGIN_ADMIN.ENABLED\n    highlight: 1\n    help: PLUGIN_ADMIN.ENABLED_HELP\n    options:\n        1: PLUGIN_ADMIN.YES\n        0: PLUGIN_ADMIN.NO\n    validate:\n        type: bool\n

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043e\u0442 0 \u0434\u043e 65536:

summary.size:\n    type: text\n    size: x-small\n    label: PLUGIN_ADMIN.SUMMARY_SIZE\n    help: PLUGIN_ADMIN.SUMMARY_SIZE_HELP\n    validate:\n        type: int\n        min: 0\n        max: 65536\n

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e\u043c > 1:

pages.list.count:\n    type: text\n    size: x-small\n    label: PLUGIN_ADMIN.DEFAULT_PAGE_COUNT\n    help: PLUGIN_ADMIN.DEFAULT_PAGE_COUNT_HELP\n    validate:\n        type: number\n        min: 1\n

\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0438\u043f \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u043a\u0430\u043a \u043c\u0430\u0441\u0441\u0438\u0432:

header.taxonomy:\n  type: taxonomy\n  label: PLUGIN_ADMIN.TAXONOMY\n  multiple: true\n  validate:\n    type: array\n

\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u043a\u0430\u043a \u0441\u043b\u0430\u0433:

folder:\n  type: text\n  label: PLUGIN_ADMIN.FOLDER_NAME\n  validate:\n    type: slug\n
"},{"location":"forms/blueprints/fields-available/#pole-array","title":"\u041f\u043e\u043b\u0435 array","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f array \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043e\u043f\u0446\u0438\u044e value_only.

\u041f\u0440\u0438\u043c\u0435\u0440:

metadata:\n   type: array\n   label: PLUGIN_ADMIN.METADATA\n   help: PLUGIN_ADMIN.METADATA_HELP\n   placeholder_key: PLUGIN_ADMIN.METADATA_KEY\n   placeholder_value: PLUGIN_ADMIN.METADATA_VALUE\n   required: true\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 placeholder_key placeholder_value value_only \u041d\u0435 \u0442\u0440\u0435\u0431\u0443\u0439\u0442\u0435 \u0438 \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u043a\u043b\u044e\u0447\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. value_type \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 textarea \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default help label name style toggleable validate.required validate.type"},{"location":"forms/blueprints/fields-available/#pole-vybora-tsveta","title":"\u041f\u043e\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0446\u0432\u0435\u0442\u0430","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f colorpicker \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0446\u0432\u0435\u0442\u0430

\u041f\u0440\u0438\u043c\u0435\u0440:

color:\n   type: colorpicker\n   label: Choose a color\n   default: '#FFFFFF'\n
\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autocomplete autofocus classes default disabled help id label name placeholder style title toggleable validate.message validate.required validate.type"},{"location":"forms/blueprints/fields-available/#polia-columns-column-stolbtsy","title":"\u041f\u043e\u043b\u044f columns/column (\u0441\u0442\u043e\u043b\u0431\u0446\u044b)","text":"

\u0422\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 columns \u0438column \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445\u0441\u044f \u043f\u043e\u043b\u0435\u0439 \u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u044b.

\u041f\u0440\u0438\u043c\u0435\u0440:

columns:\n  type: columns\n  fields:\n    column1:\n      type: column\n      fields:\n\n        # .... subfields\n\n    column2:\n      type: column\n      fields:\n\n        # .... other subfields\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 fields \u041f\u043e\u0434\u043f\u043e\u043b\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u0430/\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432"},{"location":"forms/blueprints/fields-available/#pole-formata-daty","title":"\u041f\u043e\u043b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0430\u0442\u044b","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f dateformat \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0434\u0430\u0442\u044b.

\u041f\u0440\u0438\u043c\u0435\u0440:

pages.dateformat.short:\n    type: dateformat\n    size: medium\n    classes: fancy\n    label: PLUGIN_ADMIN.SHORT_DATE_FORMAT\n    help: PLUGIN_ADMIN.SHORT_DATE_FORMAT_HELP\n    default: \"jS M Y\"\n    options:\n        \"F jS \\\\a\\\\t g:ia\": Date1\n        \"l jS \\\\of F g:i A\": Date2\n        \"D, d M Y G:i:s\": Date3\n        \"d-m-y G:i\": Date4\n        \"jS M Y\": Date5\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 options \u0412 \u043f\u043e\u043b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0430\u0440\u044b \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 multiple \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u043f\u043e\u043b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. selectize \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help label name novalidate size style toggleable validate.required validate.type"},{"location":"forms/blueprints/fields-available/#pole-daty-i-vremeni","title":"\u041f\u043e\u043b\u0435 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f datetime \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.date:\n  type: datetime\n  label: PLUGIN_ADMIN.DATE\n  toggleable: true\n  help: PLUGIN_ADMIN.DATE_HELP\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 format \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0434\u0430\u0442\u044b PHP. validate.min \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 validate.max \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default help label name size style toggleable validate.required validate.type"},{"location":"forms/blueprints/fields-available/#pole-redaktora","title":"\u041f\u043e\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f editor \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 Codemirror.

\u041f\u0440\u0438\u043c\u0435\u0440:

frontmatter:\n  classes: frontmatter\n  type: editor\n  label: PLUGIN_ADMIN.FRONTMATTER\n  autofocus: true\n  codemirror:\n    mode: 'yaml'\n    indentUnit: 4\n    autofocus: true\n    indentWithTabs: false\n    lineNumbers: true\n    styleActiveLine: true\n    gutters: ['CodeMirror-lint-markers']\n    lint: true\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 codemirror \u041d\u0430\u0431\u043e\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 codemirror. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0435\u0436\u0438\u043c: gfm (github flavored markdown) resizer \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default help label name style validate.required validate.type autofocus classes disabled id novalidate placeholder readonly"},{"location":"forms/blueprints/fields-available/#pole-elements","title":"\u041f\u043e\u043b\u0435 Elements","text":"

\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u0435.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.elements-demo.type:\n  type: elements\n  label: 'Elements Demo'\n  size: small\n  default: gelato\n  options:\n    gelato: Gelato Flavors\n    color: Color\n    planets: Planets\n  fields:\n    gelato:\n      type: element\n      fields:\n        .flavours:\n          type: array\n          default:\n            pistacchio: Pistacchio\n            vanilla: Vanilla\n            chocolate: Chocolate\n            stracciatella: Stracciatella\n    color:\n      type: element\n      fields:\n        .description:\n          type: textarea\n          rows: 10\n          default: Color (American English) or colour (Commonwealth English) is the visual perceptual property corresponding in humans to the categories called blue, green, red, etc. Color derives from the spectrum of light (distribution of light power versus wavelength) interacting in the eye with the spectral sensitivities of the light receptors. Color categories and physical specifications of color are also associated with objects or materials based on their physical properties such as light absorption, reflection, or emission spectra. By defining a color space colors can be identified numerically by their coordinates.\n    planets:\n      type: element\n      fields:\n        .favorites:\n          type: text\n          placeholder: What are your favorite planets?\n          markdown: true\n          description: 'Find a list of planets from [Wikipedia](https://en.wikipedia.org/wiki/Planet)'\n
"},{"location":"forms/blueprints/fields-available/#pole-fieldset","title":"\u041f\u043e\u043b\u0435 Fieldset","text":"

Fieldset \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.fieldset:\n  type: fieldset\n  title: Your title\n  help: Help text\n  info: Info text\n  text: Text inside fieldset and before other fields\n  icon: comments       # Fork Awesome icons system (see : forkaweso.me).\n  collapsed: true      # Initial state of fieldset (see collapsible option)\n  collapsible: true    # Whether one can expand the fieldset or not\n  fields:\n    header.fieldset.an_example_text:\n      type: text\n      label: text\n    header.fieldset.an_example_textarea:\n      type: textarea\n      label: textarea\n

\u041d\u0430\u0431\u043e\u0440\u044b \u043f\u043e\u043b\u0435\u0439 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0441 header., \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u043e\u043b\u0435\u0439 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438\u0441\u044c!

\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044f \u0432 \u043d\u0430\u0431\u043e\u0440\u0435 \u043f\u043e\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 toggleable:, \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043c\u043d\u0435\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 header.. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u043e\u043f\u0446\u0438\u0438 pagination:

header.fieldset:\n  type: fieldset\n  ... etc...\n  fields:\n    header.content.pagination:\n      type: toggle\n      toggleable: true\n      label: \"Activate Pagination ?\"\n      highlight: 1\n      default: 0\n      options:\n        1: Yes\n        0: No\n      validate:\n        type: bool\n
"},{"location":"forms/blueprints/fields-available/#znachok-nabora-polei","title":"\u0417\u043d\u0430\u0447\u043e\u043a \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u043e\u043b\u0435\u0439","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u043e\u043a \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u043e\u043b\u0435\u0439. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u043d\u0430\u0447\u043a\u043e\u0432 Fork Awesome.

\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 icon \u0418\u043a\u043e\u043d\u043a\u0430 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 collapsed \u0415\u0441\u043b\u0438 true, \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u043c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d collapsible \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u0438\u043b\u0438 \u043d\u0435\u0442 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b disabled help label name size style toggleable"},{"location":"forms/blueprints/fields-available/#pole-faila","title":"\u041f\u043e\u043b\u0435 \u0444\u0430\u0439\u043b\u0430","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f file \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445 (\u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445) \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c. \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0444\u0430\u0439\u043b\u0430 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b/\u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u041f\u043e\u043b\u0435 file \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439, \u0442\u0435\u043c\u0430\u043c\u0438 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438, \u043d\u043e \u041d\u0415 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u0414\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u043b\u0435 pagemedia, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435 filepicker \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u043e\u0432.

\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u043e\u043b\u0435 \u0444\u0430\u0439\u043b\u0430, \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0432 \u043f\u043e\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u0430. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0432 \u043f\u043e\u043b\u0435 \u0444\u0430\u0439\u043b\u0430, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u0430\u0445.

\u041f\u0440\u0438\u043c\u0435\u0440:

custom_logo_login_screen:\n  type: file\n  label: Custom Logo Login Screen\n  destination: 'plugins://admin/assets'\n  accept:\n    - image/*\n
custom_file:\n  type: file\n  label: A Label\n  destination: 'theme://assets'\n  multiple: true\n  limit: 5\n  filesize: 1\n  accept:\n    - image/*\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 destination \u041f\u0430\u043f\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b\u044b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0442\u043e\u043a\u0430 \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0440\u043d\u044f Grav. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: plugins://my-plugin/assets multiple \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f limit \u041a\u043e\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 multiple, \u043c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. filesize \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u041c\u0411 accept \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 MIME \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. [\"image/*\", '.mp3'] random_name \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 avoid_overwriting \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u043c\u0435\u0442\u043a\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430, \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default disabled help label name size style toggleable validate.required validate.type"},{"location":"forms/blueprints/fields-available/#pole-filepicker","title":"\u041f\u043e\u043b\u0435 Filepicker","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f filepicker \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445 (\u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445) \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c. \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b/\u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u041f\u0440\u0438\u043c\u0435\u0440:

picked_image:\n  type: filepicker\n  folder: 'theme://images/pages'\n  label: Select a file\n  preview_images: true\n  accept:\n    - .png\n    - .jpg\n
header.a_file:\n  type: filepicker\n  folder: 'self@'\n  preview_images: true\n  label: Select a file\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 folder \u041f\u0430\u043f\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u0444\u0430\u0439\u043b\u043e\u0432, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0442\u043e\u043a\u0430 \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0440\u043d\u044f Grav. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043c\u0435\u0441\u0442\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0444\u0430\u0439\u043b\u0430. accept \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432 preview_images \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0444\u0430\u0439\u043b\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440. on_demand \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0444\u0430\u0439\u043b\u044b \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u043e\u043a\u0443\u0441\u0435. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b \u0438\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u0430\u0439\u043b\u043e\u0432. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default disabled help label name size style toggleable validate.required"},{"location":"forms/blueprints/fields-available/#pole-primanki","title":"\u041f\u043e\u043b\u0435 \u043f\u0440\u0438\u043c\u0430\u043d\u043a\u0438","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f honeypot \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u043f\u043e\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0444\u043e\u0440\u043c\u044b \u0431\u043e\u0442\u0430\u043c\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440:

fields:\n    - name: honeypot\n      type: honeypot\n

\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0411\u043e\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u043b\u044f \u0432 \u043a\u043e\u0434\u0435 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0438\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442 \u044d\u0442\u043e \u043f\u043e\u043b\u0435. \u041e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u043e\u0440\u043c\u0443. \u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u0444\u043e\u0440\u043c\u044b, \u0430 \u043d\u0435 \u0432\u0432\u0435\u0440\u0445\u0443 \u0431\u043b\u043e\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.

\u041f\u043e\u043b\u0435 \u043f\u0440\u0438\u043c\u0430\u043d\u043a\u0438 \u2014 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u043f\u043e\u043b\u044f\u043c \u043a\u0430\u043f\u0447\u0438.

"},{"location":"forms/blueprints/fields-available/#pole-spiska","title":"\u041f\u043e\u043b\u0435 \u0441\u043f\u0438\u0441\u043a\u0430","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f list \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u043f\u043e\u043b\u0435\u0439. \u041f\u043e\u043b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 fields, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u043e\u043b\u044f, \u0438 \u0431\u0443\u0434\u0435\u0442 \u043a\u043d\u043e\u043f\u043a\u0430 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.buttons:\n  name: buttons\n  type: list\n  style: vertical\n  label: Buttons\n  fields:\n    .text:\n      type: text\n      label: Text\n    .url:\n      type: text\n      label: URL\n    .primary:\n      type: toggle\n      label: Primary\n      highlight: 1\n      default: 1\n      options:\n          1: 'Yes'\n          0: 'No'\n      validate:\n          type: bool\n

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430:

\u041f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 YAML, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 \u0431\u043b\u043e\u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

buttons:\n    -\n        text: 'Some text'\n        url: 'https://getgrav.org'\n        primary: false\n    -\n        text: 'Another text'\n        url: 'https://another-url.com'\n        primary: true\n

\u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0432 Theme Twig \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435.

\u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f - \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 Antimatter Features. \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u043e\u043a, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0442\u0435\u043a\u0441\u0442:

header.features:\n  name: features\n  type: list\n  label: Features\n\n  fields:\n    .icon:\n      type: text\n      label: Icon\n    .header:\n      type: text\n      label: Header\n    .text:\n      type: text\n      label: Text\n

\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044f list \u0438 \u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 twig for, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435:

{% for feature in page.header.features %}\n    {{ feature.icon }}\n    {{ feature.header }}\n    {{ feature.text }}\n{% endfor %}\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 fields \u041f\u043e\u0434\u043f\u043e\u043b\u044f collapsed \u0415\u0441\u043b\u0438 true, \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u043c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d style \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 vertical \u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u043c\u0435\u0441\u0442\u0430 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 btnLabel \u0422\u0435\u043a\u0441\u0442 \u043c\u0435\u0442\u043a\u0438 \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u00bb sort \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439. \u0415\u0441\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 controls \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u00bb. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 [top|bottom|both], \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e bottom. placement \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0435\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 [top|bottom|position], \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e bottom. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 placement \u2014 top \u0438\u043b\u0438 bottom, \u043e\u0431\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u0432\u0435\u0440\u0445\u0443 \u0438\u043b\u0438 \u0441\u043d\u0438\u0437\u0443 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 placement \u2014 position, \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u2014 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u044e\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0441\u0432\u0435\u0440\u0445\u0443, \u0430 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043d\u0438\u0436\u043d\u044e\u044e \u2014 \u0441\u043d\u0438\u0437\u0443. min \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. max \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. \u041a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u00bb \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default help label name validate.required validate.type size"},{"location":"forms/blueprints/fields-available/#pole-pagemediaselect","title":"\u041f\u043e\u043b\u0435 PageMediaSelect","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f pagemediaselect \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0435\u0434\u0438\u0430 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043c\u0435\u0434\u0438\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 FTP \u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043c\u0435\u0434\u0438\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.img_link:\n  label: Choose media\n  type: pagemediaselect\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 multiple \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default help label name style toggleable validate.required validate.type autofocus classes disabled id novalidate size"},{"location":"forms/blueprints/fields-available/#pole-pages","title":"\u041f\u043e\u043b\u0435 Pages","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f pages \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u0430\u0439\u0442\u0430.

\u041f\u0440\u0438\u043c\u0435\u0440:

home.alias:\n    type: pages\n    size: medium\n    classes: fancy\n    label: PLUGIN_ADMIN.HOME_PAGE\n    start_route: '/some_page'\n    show_all: false\n    show_modular: false\n    show_root: false\n    help: PLUGIN_ADMIN.HOME_PAGE_HELP\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 start_route \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u0430 show_fullpath \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 show_slug \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u0430\u0433 show_all \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b show_modular \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b show_root \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b options \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 multiple \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 limit_levels \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 selectize

\u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f multiple \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c validate.type: array. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.

\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default help label name style toggleable validate.required validate.type autofocus classes disabled novalidate size"},{"location":"forms/blueprints/fields-available/#pole-section","title":"\u041f\u043e\u043b\u0435 Section","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f Section \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u044b.

\u041f\u0440\u0438\u043c\u0435\u0440:

content:\n    type: section\n    title: PLUGIN_ADMIN.DEFAULTS\n    underline: true\n\n    fields:\n\n        #..... subfields\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 title \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a underline \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 text \u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u043d\u0438\u0437\u0443 security \u041c\u0430\u0441\u0441\u0438\u0432 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430"},{"location":"forms/blueprints/fields-available/#pole-selectize","title":"\u041f\u043e\u043b\u0435 Selectize","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f selectize \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0438\u0431\u0440\u0438\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0438 \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0433\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.

\u041f\u0440\u0438\u043c\u0435\u0440:

taxonomies:\n    type: selectize\n    selectize:\n        options:\n            - text: \"test\"\n              value: \"real value 1\"\n            - text: \"test-2\"\n              value: \"real value 2\"\n            - text: \"test-3\"\n              value: \"real value 3\"\n    size: large\n    label: PLUGIN_ADMIN.TAXONOMY_TYPES\n    classes: fancy\n    help: PLUGIN_ADMIN.TAXONOMY_TYPES_HELP\n    validate:\n        type: commalist\n
\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default help label name style toggleable validate.required validate.type \u041e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b INPUT BLOCK autocomplete autofocus classes disabled id novalidate placeholder readonly size title validate.pattern validate.message"},{"location":"forms/blueprints/fields-available/#pole-taxonomy","title":"\u041f\u043e\u043b\u0435 Taxonomy","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f taxonomy - \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.taxonomy:\n  type: taxonomy\n  label: PLUGIN_ADMIN.TAXONOMY\n  multiple: true\n  validate:\n    type: array\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 multiple \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u043f\u043e\u043b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses size style validate.required validate.pattern validate.message"},{"location":"forms/blueprints/how-to-add-file-upload/","title":"\u041a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432","text":""},{"location":"forms/blueprints/how-to-add-file-upload/#kak-dobavit-pole-dlia-zagruzki-failov","title":"\u041a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432","text":""},{"location":"forms/blueprints/how-to-add-file-upload/#zagruzka-failov","title":"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0442\u0435\u043c. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 Ajax \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u0441 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430 \u0438\u043b\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0445 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0444\u0430\u0439\u043b\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0444\u0430\u0439\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u0435, \u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u00ab\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u00bb (\u0438\u043b\u0438 \u00ab\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u00bb).

\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:

custom_file:\n  name: myfile\n  type: file\n  label: A Label\n  destination: 'plugins://my-plugin/assets'\n  multiple: true\n  autofocus: false\n  accept:\n    - image/*\n

\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0444\u0430\u0439\u043b\u0430, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u043d\u0438\u0436\u043d\u044e\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 javascript \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig: {{ assets.js('bottom') }}

"},{"location":"forms/blueprints/how-to-add-file-upload/#parametry","title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","text":"

\u041f\u043e\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439, \u043e\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0438\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f MIME \u0434\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0444\u0430\u0439\u043b\u0430:

"},{"location":"forms/blueprints/how-to-add-file-upload/#znacheniia-po-umolchaniiu","title":"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","text":"
custom_file:\n  type: file\n  label: A Label\n  multiple: false\n  destination: 'self@'\n  random_name: false\n  avoid_overwriting: false\n  limit: 10\n  accept:\n    - image/*\n
"},{"location":"forms/blueprints/how-to-add-file-upload/#multiple","title":"multiple","text":"
multiple: false # [false | true]\n

\u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u043e\u043b\u0435\u043c \u0444\u0430\u0439\u043b\u0430 HTML5, \u043a\u043e\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043e\u043f\u0446\u0438\u044f multiple, \u043e\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0442\u0430\u043a\u0436\u0435 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c limit, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432 \u0437\u0430 \u0440\u0430\u0437.

"},{"location":"forms/blueprints/how-to-add-file-upload/#destination","title":"destination","text":"
destination: 'self@' # [<path> | <stream> | self@ | page@:<path>]\n

\u041c\u0435\u0441\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 path (\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0440\u043d\u044f Grav), stream (\u0442\u0430\u043a\u043e\u0439, \u043a\u0430\u043a theme://images), self@, \u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 page@:.

self@ \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex, \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043f\u043e\u043b\u0435 \u0444\u0430\u0439\u043b\u0430 \u0432\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Flex, \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 destination.

"},{"location":"forms/blueprints/how-to-add-file-upload/#primery","title":"\u041f\u0440\u0438\u043c\u0435\u0440\u044b","text":"
  1. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 testing (user/plugins/testing), \u043c\u0435\u0441\u0442\u043e\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442:
    destination: 'plugins://testing'\n
  2. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044f, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u043b\u043e\u0433\u0430 \u043d\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435 /blog/ajax-upload (\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 user/pages/02.blog/ajax-upload), \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c page@: \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442:
    destination: 'page@:/blog/ajax-upload'\n
  3. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0442\u0435\u043c\u0430 \u2014 \u044d\u0442\u043e antimatter, \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 (\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 user/themes/antimatter/assets), \u0441 \u043f\u043e\u0442\u043e\u043a\u043e\u043c theme \u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442:
    destination: 'theme://assets'\n
"},{"location":"forms/blueprints/how-to-add-file-upload/#random-name","title":"random_name","text":"
random_name: false # [false | true]\n

\u041a\u043e\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e random_name, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0434\u043b\u0438\u043d\u043e\u0439 15 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0449\u0435\u0442\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044e \u0438\u043c\u0435\u043d.

"},{"location":"forms/blueprints/how-to-add-file-upload/#primer","title":"\u041f\u0440\u0438\u043c\u0435\u0440","text":"
'my_file.jpg' => 'y5bqsGmE1plNTF2.jpg'\n
"},{"location":"forms/blueprints/how-to-add-file-upload/#avoid-overwriting","title":"avoid_overwriting","text":"
avoid_overwriting: false # [false | true]\n

\u041a\u043e\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 prevent_overwriting \u0438 \u0444\u0430\u0439\u043b \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u0435\u043c, \u043a\u0430\u043a \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439, \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 destination, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d. \u041f\u0435\u0440\u0435\u0434 \u0432\u043d\u043e\u0432\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u043e\u044f\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u0440\u0435.

"},{"location":"forms/blueprints/how-to-add-file-upload/#primer_1","title":"\u041f\u0440\u0438\u043c\u0435\u0440","text":"
'my_file.jpg' => '20160901130509-my_file.jpg'\n
"},{"location":"forms/blueprints/how-to-add-file-upload/#limit","title":"limit","text":"
limit: 10 # [1...X | 0 (unlimited)]\n

\u041a\u043e\u0433\u0434\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 multiple, limit \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u0415\u0441\u043b\u0438 multiple \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d (\u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e), limit \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a 1.

\u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 limit \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b.

\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043b\u0438\u043c\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.

"},{"location":"forms/blueprints/how-to-add-file-upload/#accept","title":"accept","text":"
accept:\n  - 'image/*' # Array of MIME types and/or extensions. ['*'] for allowing any file.\n

\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 accept \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u0438\u043f\u0430 MIME, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. \u0412\u0441\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 . (\u0442\u043e\u0447\u043a\u0438) \u043f\u043b\u044e\u0441 \u0441\u0430\u043c\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b, \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 * (\u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0430) accept: ['*'].

"},{"location":"forms/blueprints/how-to-add-file-upload/#primery_1","title":"\u041f\u0440\u0438\u043c\u0435\u0440\u044b","text":"
  1. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b yaml \u0438json:
        accept:\n    - .yaml\n    - .json\n
  2. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0432\u0438\u0434\u0435\u043e:
        accept:\n    - 'image/*'\n    - 'video/*'\n
  3. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043b\u044e\u0431\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b mp3:
        accept:\n    - 'image/*'\n    - 'video/*'\n    - .mp3\n
  4. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b:
        accept:\n    - '*'\n
"},{"location":"forms/blueprints/how-to-add-file-upload/#filesize","title":"filesize","text":"

\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d:

  1. \u043f\u043e\u043b\u0435\u043c filesize:...
  2. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 files: filesize: \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0444\u043e\u0440\u043c\u044b user/plugins/form.yaml...
  3. \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 PHP \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 upload_max_filesize \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 post_max_size \u0434\u043b\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b.
"},{"location":"forms/blueprints/how-to-add-file-upload/#primery_2","title":"\u041f\u0440\u0438\u043c\u0435\u0440\u044b","text":"
  1. \u0427\u0442\u043e\u0431\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0434\u043e 5M
    custom_file:\n    name: myfile\n    type: file\n    label: A Label\n    destination: 'plugins://my-plugin/assets'\n    filesize: 5\n    accept:\n    - image/*\n
  2. \u0427\u0442\u043e\u0431\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0444\u0430\u0439\u043b\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c 5M, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b user/config/form.yaml:
    files:\n    multiple: false\n    limit: 10\n    destination: 'self@'\n    avoid_overwriting: false\n    random_name: false\n    filesize: 5\n    accept:\n    - 'image/*\n
"},{"location":"forms/forms/","title":"\u041e\u0431\u0437\u043e\u0440","text":""},{"location":"forms/forms/#frontend-formy","title":"\u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0444\u043e\u0440\u043c\u044b","text":"

\u041f\u043b\u0430\u0433\u0438\u043d Form \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u044e\u0431\u044b\u0435 \u0442\u0438\u043f\u044b \u0432\u0435\u0431-\u0444\u043e\u0440\u043c. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u043e\u0440\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u0434\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d Form \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e bin/gpm install form, \u0435\u0441\u043b\u0438 \u043e\u043d \u0435\u0449\u0451 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d .

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d Form, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0444\u043e\u0440\u043c\u0443.

\u0412 \u0432\u044b\u043f\u0443\u0441\u043a\u0435 Form 2.0 \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043c\u044f \u0444\u043e\u0440\u043c\u044b \u043a\u0430\u043a \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u043f\u043e\u043b\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u044b forms.html.twig, \u044d\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 forms.html.twig \u0432 \u0441\u0432\u043e\u0435\u0439 \u0442\u0435\u043c\u0435 \u0438\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435, \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c {% include \"forms/fields/formname/formname.html.twig\" %} \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 Twig \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0444\u043e\u0440\u043c.

"},{"location":"forms/forms/#sozdanie-prostoi-formy","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u044b","text":"

\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u0435\u0451 \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0434\u043a\u0430\u0447\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab\u0424\u043e\u0440\u043c\u0430\u00bb. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0443\u043a\u0430\u0437\u0430\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 form.md.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, user/pages/03.your-form/form.md.

\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0443\u0434\u0435\u0442:

---\ntitle: A Page with an Example Form\nform:\n    name: contact-form\n    fields:\n        name:\n          label: Name\n          placeholder: Enter your name\n          autofocus: on\n          autocomplete: on\n          type: text\n          validate:\n            required: true\n\n        email:\n          label: Email\n          placeholder: Enter your email address\n          type: email\n          validate:\n            required: true\n\n    buttons:\n        submit:\n          value: Submit\n        reset:\n          value: Reset\n\n    process:\n        email:\n            from: \"{{ config.plugins.email.from }}\"\n            to:\n              - \"{{ config.plugins.email.to }}\"\n              - \"{{ form.value.email }}\"\n            subject: \"[\u041e\u0442\u0437\u044b\u0432] {{ form.value.name|e }}\"\n            body: \"{% include 'forms/data.html.twig' %}\"\n        save:\n            fileprefix: feedback-\n            dateformat: Ymd-His-u\n            extension: txt\n            body: \"{% include 'forms/data.txt.twig' %}\"\n        message: \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448 \u043e\u0442\u0437\u044b\u0432!\n        display: thankyou\n\n---\n\n# \u041c\u043e\u044f \u0444\u043e\u0440\u043c\u0430\n\n\u0417\u0434\u0435\u0441\u044c \u0438\u0434\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 **Markdown**...\n

\u042d\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 form.md \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0447\u0430\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u043e\u0439\u043d\u044b\u043c\u0438 \u0434\u0435\u0444\u0438\u0441\u0430\u043c\u0438 --- \u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0435\u0451 \u0432 \u043f\u043e\u043b\u0435 Frontmatter.

\u042d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c, \u043f\u043e\u043b\u0435\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0438 \u0434\u0432\u0443\u043c\u044f \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438: \u043e\u0434\u043d\u0430 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u0434\u043b\u044f \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u043e\u043b\u0435\u0439. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043e\u043b\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u0444\u043e\u0440\u043c\u044b, \u0441\u043c. \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b.

\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u00bb? \u041e\u043d \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f process. \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u0445, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435.

  1. \u041d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u0442\u0435\u043c\u043e\u0439 \u00ab[\u041e\u0442\u0437\u044b\u0432] [\u0432\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f]\u00bb. \u0422\u0435\u043b\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0438\u0441\u044c\u043c\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 forms/data.html.twig \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0442\u0435\u043c\u044b.

  2. \u0412 user/data \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u044b. \u0428\u0430\u0431\u043b\u043e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u0432 \u0444\u0430\u0439\u043b\u0435 forms/data.txt.twig \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0442\u0435\u043c\u044b.

  3. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u00abthankyou\u00bb \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 thankyou \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u0444\u043e\u0440\u043c\u0443.

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d Email \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b.

"},{"location":"forms/forms/#neskolko-form","title":"\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c","text":"

\u0421 \u0432\u044b\u043f\u0443\u0441\u043a\u043e\u043c Form Plugin v2.0 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u043e\u0445\u043e\u0436, \u043d\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0444\u043e\u0440\u043c\u044b, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 contact-form \u0438 newsletter-form:

forms:\n    contact-form:\n        fields:\n            ...\n        buttons:\n            ...\n        process:\n            ...\n\n    newsletter-form:\n        fields:\n            ...\n        buttons:\n            ...\n        process:\n            ...\n

\u0412\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u043e\u0440\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0432 \u043e\u0434\u043d\u0443 \u0444\u043e\u0440\u043c\u0443 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 forms::

forms:\n    contact-form:\n        fields:\n            ...\n        buttons:\n            ...\n        process:\n            ...\n
"},{"location":"forms/forms/#otobrazhenie-form-iz-twig","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c \u0438\u0437 Twig","text":"

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 - \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0430\u0439\u043b Twig \u0432 \u0448\u0430\u0431\u043b\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0444\u043e\u0440\u043c\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

{% include \"forms/form.html.twig\" %}\n

\u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d Twig, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0430\u043c\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c Form. \u0412 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443, \u043a\u0430\u043a \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u0443\u0441\u043f\u0435\u0445\u0435 \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0444\u043e\u0440\u043c\u044b.

\u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0449\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u043e\u0440\u043c. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u044b \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0435 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d Twig \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 form:, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c:

{% include \"forms/form.html.twig\" with { form: forms('contact-form') } %}\n

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0412\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0444\u043e\u0440\u043c\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445. \u041f\u043e\u043a\u0430 \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u0438\u043c\u0435\u043d\u0430 \u0444\u043e\u0440\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435, Grav \u043d\u0430\u0439\u0434\u0435\u0442 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443!

\u0412\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435:

# \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430\n{% include \"forms/form.html.twig\" with { form: forms('contact-form') } %}\n\n# \u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0438\n{% include \"forms/form.html.twig\" with { form: forms('newsletter-form') } %}\n

\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b - \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u043d\u0435 \u043d\u0430 \u0438\u043c\u044f \u0444\u043e\u0440\u043c\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0430\u0441\u0441\u0438\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

# \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430\n{% include \"forms/form.html.twig\" with { form: forms( {route:'/forms/contact'} ) } %}\n

\u042d\u0442\u043e \u043d\u0430\u0439\u0434\u0435\u0442 \u043f\u0435\u0440\u0432\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c /forms/contact.

"},{"location":"forms/forms/#otobrazhenie-form-v-soderzhimom-stranitsy","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c \u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, default.md), \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0444\u043e\u0440\u043c\u0430. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u0432 \u0444\u043e\u0440\u043c\u0443 \u0438\u043c\u044f \u0438\u043b\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442.

\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 Twig \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430, \u0430 \u043a\u044d\u0448 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u0444\u043e\u0440\u043c\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0430 \u043d\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c, \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0444\u043e\u0440\u043c\u044b \u043c\u043e\u0433\u043b\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438.

---\ntitle: Page with Forms\nprocess:\n  twig: true\ncache_enable: false\n---\n\n# \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430\n{% include \"forms/form.html.twig\" with {form: forms('contact-form')} %}\n\n# \u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u043d\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0438\n{% include \"forms/form.html.twig\" with {form: forms( {route: '/newsletter-signup'} ) } %}\n
"},{"location":"forms/forms/#modulnye-formy","title":"\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b","text":"

\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f Form, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u0430\u0448\u0435\u0439 \u043e\u0431\u0449\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0444\u043e\u0440\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0412 Form v2.0 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u0444\u043e\u0440\u043c\u0443. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d, \u043f\u043b\u0430\u0433\u0438\u043d \u0444\u043e\u0440\u043c\u044b \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u00ab\u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u00bb, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b 1.0.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d Twig \u0441\u0432\u043e\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0432\u044b\u0448\u0435.

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u043e\u0440\u043c\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c action: \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f redirect: \u0438\u043b\u0438 display:, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0444\u043e\u0440\u043c\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 \u043d\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 form/modular/_form/form.md:

---\ntitle: \u041c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430\n\nform:\n  action: '/form/modular'\n  inline_errors: true\n  fields:\n    person.name:\n      type: text\n      label: Name\n      validate:\n        required: true\n\n  buttons:\n    submit:\n      type: submit\n      value: Submit\n\n  process:\n    message: \"Thank you from your submission <b>{{ form.value('person.name') }}</b>!\"\n    reset: true\n    display: '/form/modular'\n---\n\n## \u041c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430\n
"},{"location":"forms/forms/example-form/","title":"\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430","text":""},{"location":"forms/forms/example-form/#primer-kontaktnaia-forma","title":"\u041f\u0440\u0438\u043c\u0435\u0440: \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430","text":""},{"location":"forms/forms/example-form/#prostaia-kontaktnaia-forma","title":"\u041f\u0440\u043e\u0441\u0442\u0430\u044f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430","text":"

\u041f\u043b\u0430\u0433\u0438\u043d Grav Form \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443.

"},{"location":"forms/forms/example-form/#zhivoi-primer","title":"\u0416\u0438\u0432\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440","text":"

\u0423 \u043a\u0430\u0440\u043a\u0430\u0441\u0430 Sora Article \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u0444\u043e\u0440\u043c\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430:

\u0416\u0438\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430

\u0424\u0430\u0439\u043b markdown

"},{"location":"forms/forms/example-form/#nastroika-stranitsy","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0412\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 form.md \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0448\u0430\u0431\u043b\u043e\u043d \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0448\u0430\u0431\u043b\u043e\u043d form.

\u0428\u0430\u0431\u043b\u043e\u043d \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0442\u0435\u0433 {% block content %}, \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0433\u0438\u043d Grav Form \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b \u0432\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u041f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 YAML \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0441\u0432\u043e\u0435\u043c \u043b\u044e\u0431\u0438\u043c\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:

---\ntitle: Contact Form\n\nform:\n    name: contact\n\n    fields:\n        name:\n          label: Name\n          placeholder: Enter your name\n          autocomplete: on\n          type: text\n          validate:\n            required: true\n\n        email:\n          label: Email\n          placeholder: Enter your email address\n          type: email\n          validate:\n            required: true\n\n        message:\n          label: Message\n          placeholder: Enter your message\n          type: textarea\n          validate:\n            required: true\n\n        g-recaptcha-response:\n          label: Captcha\n          type: captcha\n          recaptcha_not_validated: 'Captcha not valid!'\n\n    buttons:\n        submit:\n          type: submit\n          value: Submit\n        reset:\n          type: reset\n          value: Reset\n\n    process:\n        captcha: true\n        save:\n            fileprefix: contact-\n            dateformat: Ymd-His-u\n            extension: txt\n            body: \"{% include 'forms/data.txt.twig' %}\"\n        email:\n            subject: \"[Site Contact Form] {{ form.value.name|e }}\"\n            body: \"{% include 'forms/data.html.twig' %}\"\n        message: Thank you for getting in touch!\n        display: thankyou\n---\n\n# Contact form\n\nSome sample page content\n

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Email.

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Google reCAPTCHA \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0435 Captcha, \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0430\u0448\u0438 site_key \u0438 secret_key \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Form, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Google reCaptcha, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u043f\u043e\u043b\u0435 g-recaptcha-response \u0438 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 captcha: true \u0438\u0437 \u0441\u0435\u043a\u0446\u0438\u0438 process.

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 contacts \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c thankyou/, \u0430 \u0432 \u043d\u0435\u0439 \u2014 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c formdata.md. \u0418 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:

---\ntitle: Email sent\ncache_enable: false\nprocess:\n    twig: true\n---\n\n## Email sent!\n

\u0412\u043e\u0442 \u0438 \u0432\u0441\u0451!

\u0424\u043e\u0440\u043c\u044b \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0435, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445

\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u044f\u0442 \u0444\u043e\u0440\u043c\u0443, \u043f\u043b\u0430\u0433\u0438\u043d \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0432\u0430\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e (\u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 form \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Email) \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 data/.

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0447\u0442\u0438\u0442\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0443 Email

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d Grav Data Manager, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

\u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b Grav \u043c\u043e\u0433\u043b\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

"},{"location":"forms/forms/fields-available/","title":"\u0418\u043d\u0434\u0435\u043a\u0441 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b","text":""},{"location":"forms/forms/fields-available/#ssylka-ukazatel-polei-formy","title":"\u0421\u0441\u044b\u043b\u043a\u0430: \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0435\u0439 \u0444\u043e\u0440\u043c\u044b","text":""},{"location":"forms/forms/fields-available/#obshchie-atributy-polei","title":"\u041e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u043e\u043b\u0435\u0439","text":"

\u041a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u043b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u043b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u0445 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0432 \u043f\u043e\u043b\u0435 - \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f.

\u042d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0449\u0443\u044e \u043e\u0441\u043d\u043e\u0432\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044f.

\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 autocomplete \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 on \u0438\u043b\u0438 off autofocus \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0430\u0432\u0442\u043e\u0444\u043e\u043a\u0443\u0441 \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u043b\u0435 classes \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 CSS \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f default \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e disabled \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043b\u044f help \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0443 \u043a \u043f\u043e\u043b\u044e id \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u044f. \u0422\u0430\u043a\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 for \u0434\u043b\u044f \u0442\u0435\u0433\u0430 label label \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043a\u0443 \u043f\u043e\u043b\u044f display_label \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 true \u0438\u043b\u0438 false labelclasses \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 CSS \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f sublabel \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u043b\u044f \u043f\u043e\u0434 \u043c\u0435\u0442\u043a\u043e\u0439 sublabelclasses \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 CSS \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f name \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u043c\u044f \u043f\u043e\u043b\u044f novalidate \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 novalidate \u043f\u043e\u043b\u044f outerclasses \u043a\u043b\u0430\u0441\u0441\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 div, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0438\u0439 \u0442\u0435\u0433 label \u0438 \u043f\u043e\u043b\u0435 wrapper_classes \u041a\u043b\u0430\u0441\u0441\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u043f\u043e\u043b\u0435 placeholder \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u043f\u043e\u043b\u044f readonly \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f size \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 \u0432 \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: large, x-small, medium, long, small. \u0412\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435 style \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0438\u043b\u044c \u043f\u043e\u043b\u044f title \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043f\u043e\u043b\u044f type \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0442\u0438\u043f \u043f\u043e\u043b\u044f validate.required \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435 \u043a\u0430\u043a \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 validate.pattern \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 validate.message \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0431\u043e\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438

\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:

attributes:\n  key: value\n

\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f data-*, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:

datasets:\n  key: value\n

\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0438 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043f\u043e\u043b\u044f:

<input name=\"data[name]\" value=\"\" type=\"text\" class=\"form-input \" key=\"value\" data-key=\"value\">\n

\u041f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438: 'on', true, 1. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435..

"},{"location":"forms/forms/fields-available/#dostupnye-polia","title":"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044f","text":""},{"location":"forms/forms/fields-available/#pole-basic-captcha","title":"\u041f\u043e\u043b\u0435 Basic-Captcha","text":"

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Forms 7.0.0 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u043f\u043e\u043b\u044e Google ReCaptcha. \u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e \u0421\u041f\u0410\u041c\u043e\u043c \u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0445, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441 \u0445\u043b\u043e\u043f\u043e\u0442\u0430\u043c\u0438 \u0438\u043b\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438 GPDR, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c Google. \u0412 \u043d\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f OCR-\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0435 \u0448\u0440\u0438\u0444\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0430\u0442\u0430\u043a, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432.

\u0442\u0438\u043f \u043f\u043e\u043b\u044f basic-captcha \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e forms, \u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041e\u0431\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Basic-Captcha \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0430\u0448\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u044b (\u043e\u0431\u044b\u0447\u043d\u043e user/config/plugins/form.yaml). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

basic_captcha:\n  type: characters # options: [characters | math]\n  chars:\n    length: 6 # number of chars to output\n    font: zxx-noise.ttf # options: [zxx-noise.ttf | zxx-camo.ttf | zxx-xed.ttf | zxx-sans.ttf]\n    bg: '#cccccc' # 6-char hex color\n    text: '#333333' # 6-char hex color\n    size: 24 # font size in px\n    start_x: 5 # start position in x direction in px\n    start_y: 30 # start position in y direction in px\n    box_width: 135 # box width in px\n    box_height: 40 # box height in px\n  math:\n    min: 1 # smallest digit\n    max: 12 # largest digit\n    operators: ['+', '-', '*'] # operators that can be used in math\n

\u041f\u0440\u0438\u043c\u0435\u0440:

basic-captcha:\n  type: basic-captcha\n  placeholder: \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 6 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\n  label: \u0412\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u043a?\n

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0430\u043a\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 process:, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0444\u043e\u0440\u043c\u044b.

\u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 process: \u0444\u043e\u0440\u043c\u044b, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u0430\u043f\u0442\u0447\u0438 \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u0430.

\u041f\u0440\u0438\u043c\u0435\u0440:

process:\n  basic-captcha:\n    message: \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437...\n
"},{"location":"forms/forms/fields-available/#pole-turnstile-captcha-cloudflare","title":"\u041f\u043e\u043b\u0435 Turnstile Captcha (Cloudflare)","text":"

\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 Form v7.1.0, Grav \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f Cloudflare Turnstile. \u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u2014 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0421\u041f\u0410\u041c\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0445, \u0438 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u043f\u043e\u043b\u044e Google ReCaptcha \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c GPDR, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u043c Google. \u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e \u0421\u041f\u0410\u041c\u043e\u043c \u0432 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0445. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e Turnstile.

"},{"location":"forms/forms/fields-available/#preimushchestva-po-sravneniiu-s-google-recaptcha","title":"\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 Google ReCaptcha","text":"
  1. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c GDPR \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u0437\u0430\u0449\u0438\u0442\u0443 \u0447\u0430\u0441\u0442\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439
  2. \u0427\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u043e\u0432
  3. \u041e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u043a \u0432 Cloudflare, \u0442\u0430\u043a \u0438 \u0432 Grav, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.
  4. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u0438\u0447\u0443\u0434\u043b\u0438\u0432\u044b\u0445 \u043e\u0431\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439 \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c (ajax), \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442!
  5. \u0418\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043e\u043f\u044b\u0442 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 ReCaptcha, \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u043e\u0432 \u043c\u0430\u0448\u0438\u043d, \u0441\u0432\u0435\u0442\u043e\u0444\u043e\u0440\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0435\u0439 \u0435\u0440\u0443\u043d\u0434\u044b
  6. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043b\u0443\u0447\u0448\u0435 \u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a \u043d\u043e\u0432\u044b\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c \u0430\u0442\u0430\u043a.
  7. \u0418\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043c. \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442
"},{"location":"forms/forms/fields-available/#integratsiia","title":"\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f","text":"

\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Grav Forms \u0441 Turnstile, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 Turnstile, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \"get started\". \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u0438\u043f \u0432\u0438\u0434\u0436\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439, \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043b\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0439. \u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0438\u043f \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Cloudflare, \u0432\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 Grav. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0437\u0436\u0435, \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u0430\u0445 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432.

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u0441\u0435 \u0434\u043e\u043c\u0435\u043d\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435 Turnstile Captcha, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0430\u0448\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443.

\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430 \u0432\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b site_key \u0438 site_secret, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u044b (\u043e\u0431\u044b\u0447\u043d\u043e user/config/plugins/form.yaml). \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0433 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a Grav \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0437\u0430 \u0432\u0430\u0441.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

turnstile:\n  theme: light\n  site_key: <Your Turnstile Site Key>\n  secret_key: <Your Turnstile Secret Key>\n

\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 process: \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0444\u043e\u0440\u043c\u044b.

\u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 process: \u0444\u043e\u0440\u043c\u044b, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 captcha \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u0430.

"},{"location":"forms/forms/fields-available/#primer","title":"\u041f\u0440\u0438\u043c\u0435\u0440","text":"

\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.

form:\n  name: contact\n  fields:\n    name:\n      label: Name\n      type: text\n      validate:\n        required: true\n    email:\n      label: Email\n      type: email\n      validate:\n        required: true\n    message:\n      label: Message\n      type: textarea\n      validate:\n        required: true\n    captcha:\n      type: turnstile\n      theme: light\n  buttons:\n    submit:\n      type: submit\n      value: Submit\n  process:\n    turnstile: true\n    email:\n      subject: '[Acme] {{ form.value.name|e }}'\n      reply_to: '{{ form.value.name|e }} <{{ form.value.email }}>'\n    message: Thanks for contacting us!\n    reset: true\n    display: '/'\n
"},{"location":"forms/forms/fields-available/#pole-google-captcha-recaptcha","title":"\u041f\u043e\u043b\u0435 Google Captcha (ReCaptcha)","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f captcha \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 Google reCAPTCHA \u0432 \u0432\u0430\u0448\u0443 \u0444\u043e\u0440\u043c\u0443. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0444\u043e\u0440\u043c\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437.

\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Google reCAPTCHA \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 reCAPTCHA

\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 3.0, \u043f\u043e\u043b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 3 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 reCAPTCHA. \u041e\u0431\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f reCAPTCHA \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u044b (\u043e\u0431\u044b\u0447\u043d\u043e user/config/plugins/form.yaml). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

recaptcha:\n  version: 2-checkbox\n  theme: light\n  site_key:\n  secret_key:\n

\u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e:

\u041a\u043b\u044e\u0447 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f version \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 2-checkbox, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c 2-invisible \u0438\u043b\u0438 3 theme \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e light, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c dark (\u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 2-x) site_key \u0412\u0430\u0448 \u043a\u043b\u044e\u0447 \u0441\u0430\u0439\u0442\u0430 Google secret_key \u0412\u0430\u0448 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 Google

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0434\u043e\u043c\u0435\u043d \u0441\u0430\u0439\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Google reCAPTCHA.

\u0412 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0444\u043e\u0440\u043c\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442 name \u043f\u043e\u043b\u044f captcha \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c g-recaptcha-response'. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Google reCAPTCHA \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u043e\u0434 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f Captcha \u0432 \u043f\u043e\u043b\u0435 \u0441 \u0438\u043c\u0435\u043d\u0435\u043cg-recaptcha-response`.

\u041f\u0440\u0438\u043c\u0435\u0440:

g-recaptcha-response:\n  type: captcha\n  label: Captcha\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 recaptcha_not_validated, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442\u0435, \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u0444\u043e\u0440\u043c\u044b. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u043a\u043b\u044e\u0447 recaptcha_site_key, \u0430 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u044b, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u043e.

g-recaptcha-response:\n  type: captcha\n  label: Captcha\n  recaptcha_site_key: ENTER_YOUR_CAPTCHA_PUBLIC_KEY\n  recaptcha_not_validated: '\u041a\u0430\u043f\u0442\u0447\u0430 \u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430!'\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 recaptcha_site_key \u041a\u043b\u044e\u0447 \u0441\u0430\u0439\u0442\u0430 Google reCAPTCHA (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e) recaptcha_not_validated \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435, \u0447\u0442\u043e \u043a\u0430\u043f\u0447\u0430 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b help label name outerclasses validate.required

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0430\u043a\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 process:, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0444\u043e\u0440\u043c\u044b.

\u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 process: \u0444\u043e\u0440\u043c\u044b, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u0430\u043f\u0442\u0447\u0438 \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u0430.

\u041f\u0440\u0438\u043c\u0435\u0440:

process:\n  captcha: true\n
"},{"location":"forms/forms/fields-available/#proverka-captcha-na-storone-servera","title":"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Captcha \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","text":"

\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442 Captcha \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0438 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0444\u043e\u0440\u043c\u044b, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043d\u0435\u0432\u0435\u0440\u043d\u0430. \u0427\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0432\u043e\u0434\u0430 \u043a\u0430\u043f\u0447\u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432\u0432\u043e\u0434\u0430 \u043a\u0430\u043f\u0447\u0438 \u0432 \u0441\u0432\u043e\u0438 \u0444\u043e\u0440\u043c\u044b:

process:\n  captcha: true\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 message \u043e\u0431 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442\u0435, \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b recaptcha_secret, \u0430 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u044b, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u0442\u043e.

process:\n  captcha:\n    recaptcha_secret: ENTER_YOUR_CAPTCHA_SECRET_KEY\n    message: 'Successfully passed reCAPTCHA!'\n

\u0421\u043c. \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0435\u0433\u043e \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438.

"},{"location":"forms/forms/fields-available/#pole-flazhka","title":"\u041f\u043e\u043b\u0435 \u0444\u043b\u0430\u0436\u043a\u0430","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f checkbox \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u043b\u0430\u0436\u043a\u0430 \u0432 \u0432\u0430\u0448\u0443 \u0444\u043e\u0440\u043c\u0443.

\u041f\u0440\u0438\u043c\u0435\u0440:

agree_to_terms:\n  type: checkbox\n  label: '\u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c \u0441 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438'\n  validate:\n    required: true\n
\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled id label name novalidate outerclasses size style validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-flazhkov","title":"\u041f\u043e\u043b\u0435 \u0444\u043b\u0430\u0436\u043a\u043e\u0432","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f checkboxes \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u0444\u043b\u0430\u0436\u043a\u043e\u0432 \u0432 \u0432\u0430\u0448\u0443 \u0444\u043e\u0440\u043c\u0443.

\u041f\u0440\u0438\u043c\u0435\u0440\u044b:

pages.process:\n  type: checkboxes\n  label: PLUGIN_ADMIN.PROCESS\n  help: PLUGIN_ADMIN.PROCESS_HELP\n  default:\n    markdown: true\n    twig: true\n  options:\n    markdown: Markdown\n    twig: Twig\n  use: keys\n
my_field:\n  type: checkboxes\n  label: \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u043b\u0430\u0436\u043a\u043e\u0432\n  default:\n    - option1\n    - option2\n  options:\n    option1: \u0412\u0430\u0440\u0438\u0430\u043d\u0442 1\n    option2: \u0412\u0430\u0440\u0438\u0430\u043d\u0442 2\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 use \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 keys, \u0444\u043b\u0430\u0436\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0444\u043e\u0440\u043c\u044b. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. options \u041c\u0430\u0441\u0441\u0438\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u00ab\u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name outerclasses size style validate.required validate.pattern validate.message

\u041f\u043e\u043b\u0435 \u0444\u043b\u0430\u0436\u043a\u043e\u0432 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 remember.

"},{"location":"forms/forms/fields-available/#uslovnoe-pole","title":"\u0423\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043f\u043e\u043b\u0435","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f conditional \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f.

\u041f\u0440\u0438\u043c\u0435\u0440\u044b:

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0435 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442:

my_conditional:\n  type: conditional\n  condition: config.plugins.yourplugin.enabled\n  fields: # The field(s) below will be displayed only if the plugin named yourplugin is enabled\n    header.mytextfield:\n      type: text\n      label: \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435\n

\u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a, \u0438 \u043f\u043e\u043b\u0435 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043f\u043e\u0439\u043c\u0435\u0442.

my_conditional:\n  type: conditional\n  condition: \"config.site.something == 'custom'\"\n  fields: # The field(s) below will be displayed only if the `site` configuration option `something` equals `custom`\n    header.mytextfield:\n      type: text\n      label: \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 condition \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f twig. \u041b\u044e\u0431\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e twig, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0446\u0435\u043d\u0435\u043d\u0430 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b disabled id label name"},{"location":"forms/forms/fields-available/#pole-daty","title":"\u041f\u043e\u043b\u0435 \u0434\u0430\u0442\u044b","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f date \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 HTML5 date.

\u041f\u0440\u0438\u043c\u0435\u0440:

- type: date\n  label: Enter a date\n  validate.min: '2014-01-01'\n  validate.max: '2018-12-31'\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 validate.min \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 min \u043f\u043e\u043b\u044f (\u0441\u043c. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b) validate.max \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 max \u043f\u043e\u043b\u044f (\u0441\u043c. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b) \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses readonly size style title validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-otobrazheniia","title":"\u041f\u043e\u043b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f display \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u043e\u0440\u043c\u044b. \u041c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c Markdown-\u043a\u043e\u043d\u0442\u0435\u043d\u0442.

\u041f\u0440\u0438\u043c\u0435\u0440:

test:\n  type: display\n  size: large\n  label: Instructions\n  markdown: true\n  content: \"This is a test of **bold** and _italic_ in a text/display field\\n\\nanother paragraph....\"\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 markdown \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 Markdown \u0432 \u043f\u043e\u043b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e content \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b help id label name id outerclasses size style"},{"location":"forms/forms/fields-available/#pole-elektronnoi-pochty","title":"\u041f\u043e\u043b\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f email \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442 input \u0442\u0438\u043f\u0430 email.

\u0412 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u043f\u0438\u0441\u044c\u043c\u0430\u0445 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043b\u043e\u0433\u0438\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c, \u043d\u0438\u0436\u043d\u0435\u043c \u0438\u043b\u0438 \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.email:\n  type: email\n  autofocus: true\n  label: Email\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 minlength \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 maxlength \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 validate.min \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 validate.max \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses readonly size style title validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-faila","title":"\u041f\u043e\u043b\u0435 \u0444\u0430\u0439\u043b\u0430","text":"

\u0421 \u0442\u0438\u043f\u043e\u043c \u043f\u043e\u043b\u044f file \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0447\u0435\u0440\u0435\u0437 \u0444\u043e\u0440\u043c\u0443. \u041f\u043e\u043b\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b \u0442\u0438\u043f\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0433\u0434\u0435 \u0431\u044b\u043b\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0444\u043e\u0440\u043c\u0430.

# Default settings\nmy_files:\n  type: file\n  multiple: false\n  destination: 'self@'\n  accept:\n    - image/*\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 multiple \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c true \u0438\u043b\u0438 false, \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e time destination \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c @self, @page:/route, local/rel/path/, \u0438\u043b\u0438 \u043f\u043e\u0442\u043e\u043a PHP. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e @self, \u0444\u0430\u0439\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0442\u0443\u0434\u0430, \u0433\u0434\u0435 \u0431\u044b\u043b\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0444\u043e\u0440\u043c\u0430 (current .md). \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 @page:/route \u0444\u0430\u0439\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0435\u0441\u043b\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, @page:/blog/a-blog-post). \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e 'local/rel/path', \u0444\u0430\u0439\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, user/images/uploads. \u0415\u0441\u043b\u0438 \u043f\u0443\u0442\u044c \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0439 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u043f\u043e\u0442\u043e\u043a PHP, \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u044b\u0439 Grav, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 user-data://my-form \u0438\u043b\u0438 theme://media/uploads. accept \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 MIME. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b gif \u0438 mp4: accept: ['image/gif', 'video/mp4']

\u041f\u043e\u043b\u0435 file \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 \u0444\u043e\u0440\u043c\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u043f\u043e\u043b\u0435\u043c.

\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b help label name outerclasses

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043f\u043e\u043b\u0435 \u0442\u0438\u043f\u0430 file \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0442\u0435\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u0435\u043c, \u0447\u0442\u043e \u0438 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 avoid_overwriting \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u044f.

"},{"location":"forms/forms/fields-available/#skrytoe-pole","title":"\u0421\u043a\u0440\u044b\u0442\u043e\u0435 \u043f\u043e\u043b\u0435","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f hidden \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u0444\u043e\u0440\u043c\u0443.

Example:

header.some_field:\n  type: hidden\n  default: my-value\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 name \u0418\u043c\u044f \u043f\u043e\u043b\u044f. \u0415\u0441\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0438\u043c\u044f \u043f\u043e\u043b\u044f \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f (\u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435: header.some_field) \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default"},{"location":"forms/forms/fields-available/#pole-primanki","title":"\u041f\u043e\u043b\u0435 \u043f\u0440\u0438\u043c\u0430\u043d\u043a\u0438","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f honeypot \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u043f\u043e\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0444\u043e\u0440\u043c\u044b \u0431\u043e\u0442\u0430\u043c\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440:

fields:\n  honeypot:\n    type: honeypot\n

\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0411\u043e\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u043b\u044f \u0432 \u043a\u043e\u0434\u0435 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0438\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442 \u044d\u0442\u043e \u043f\u043e\u043b\u0435. \u041e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u043e\u0440\u043c\u0443. \u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u0444\u043e\u0440\u043c\u044b, \u0430 \u043d\u0435 \u0432\u0432\u0435\u0440\u0445\u0443 \u0431\u043b\u043e\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.

\u041f\u043e\u043b\u0435 \u043f\u0440\u0438\u043c\u0430\u043d\u043a\u0438 - \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u043f\u043e\u043b\u044f\u043c \u043a\u0430\u043f\u0447\u0438.

"},{"location":"forms/forms/fields-available/#pole-ignorirovaniia","title":"\u041f\u043e\u043b\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f ignore \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043f\u0440\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430

\u041f\u0440\u0438\u043c\u0435\u0440:

header.process:\n  type: ignore\ncontent:\n  type: ignore\n
"},{"location":"forms/forms/fields-available/#chislovoe-pole","title":"\u0427\u0438\u0441\u043b\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f number \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u043b\u0430, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044f HTML5 number.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.count:\n  type: number\n  label: '\u0421\u043a\u043e\u043b\u044c\u043a\u043e?'\n  validate:\n    min: 10\n    max: 360\n    step: 10\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 validate.min \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 validate.max \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 validate.step \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0448\u0430\u0433 \u0432\u043f\u0435\u0440\u0435\u0434 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses readonly size style title validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-parolia","title":"\u041f\u043e\u043b\u0435 \u043f\u0430\u0440\u043e\u043b\u044f","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f password \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0430\u0440\u043e\u043b\u044f.

\u041f\u0440\u0438\u043c\u0435\u0440:

password:\n  type: password\n  label: \u041f\u0430\u0440\u043e\u043b\u044c\n
\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses readonly size style title validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-radio","title":"\u041f\u043e\u043b\u0435 Radio","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f radio \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u0440\u0430\u0434\u0438\u043e\u043f\u043e\u043b\u0435\u0439.

\u041f\u0440\u0438\u043c\u0435\u0440:

my_choice:\n  type: radio\n  label: \u0412\u044b\u0431\u043e\u0440\n  default: markdown\n  options:\n    markdown: Markdown\n    twig: Twig\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 options \u041c\u0430\u0441\u0441\u0438\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u00ab\u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default disabled help id label name outerclasses validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-diapazona","title":"\u041f\u043e\u043b\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430","text":"

\u041f\u043e\u043b\u0435 range \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.choose_a_number_in_range:\n  type: range\n  label: \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0447\u0438\u0441\u043b\u043e\n  validate:\n    min: 1\n    max: 10\n
\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses readonly size style title validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-section","title":"\u041f\u043e\u043b\u0435 Section","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f Section \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u044b.

\u041f\u0440\u0438\u043c\u0435\u0440:

content:\n  type: section\n  title: PLUGIN_ADMIN.DEFAULTS\n  underline: true\n\n  fields:\n\n    #..... subfields\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 title \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a text \u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u043d\u0438\u0437\u0443 security \u041c\u0430\u0441\u0441\u0438\u0432 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430 title_level \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0433 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: h3"},{"location":"forms/forms/fields-available/#pole-vybora","title":"\u041f\u043e\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f select \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430.

\u041f\u0440\u0438\u043c\u0435\u0440 1:

pages.order.by:\n  type: select\n  size: long\n  classes: fancy\n  label: '\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e'\n  help: '\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d'\n  options:\n    default: '\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438'\n    folder: '\u041f\u0430\u043f\u043a\u0430 - \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043f\u043a\u0438 \u0431\u0435\u0437 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430'\n    title: '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a - \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u043b\u044f Title \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435'\n    date: '\u0414\u0430\u0442\u0430 - \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u043b\u044f Date \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435'\n

\u041f\u0440\u0438\u043c\u0435\u0440 2 - \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439:

my_element:\n  type: select\n  size: long\n  classes: fancy\n  label: '\u041c\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 Select'\n  help: '\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u044e\u0447:\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 disabled \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0446\u0438\u0438'\n  options:\n    option1:\n      value: '\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1'\n    option2:\n      value: '\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2'\n    option3:\n      disabled: true\n      value: '\u0412\u0430\u0440\u0438\u0430\u043d\u0442 3'\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 options \u041c\u0430\u0441\u0441\u0438\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u00ab\u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb. \u041a\u043b\u044e\u0447 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0444\u043e\u0440\u043c\u043e\u0439. multiple \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f multiple \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c

pages.order.by:\n  validate:\n    type: array\n

\u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.

\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses size style validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-select-optgroup","title":"\u041f\u043e\u043b\u0435 Select Optgroup","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f select_optgroup \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0441 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.newField:\n  type: select_optgroup\n  label: Test Optgroup Select Field\n  options:\n    - OptGroup1:\n        - Option1\n        - Option2\n    - OptGroup2:\n        - Option3\n        - Option4\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 options \u041c\u0430\u0441\u0441\u0438\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u00ab\u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb. multiple \u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses size style validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#promezhutochnoe-pole","title":"\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0435 \u043f\u043e\u043b\u0435","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f spacer \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438\u043b\u0438 \u0442\u0435\u0433\u0430 hr

\u041f\u0440\u0438\u043c\u0435\u0440:

test:\n  type: spacer\n  title: A title\n  text: Some text\n  underline: true\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 title \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a h3 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b text \u0442\u0435\u043a\u0441\u0442. \u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 underline \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0442 \u0442\u0435\u0433 <hr>"},{"location":"forms/forms/fields-available/#polia-tabs-tab","title":"\u041f\u043e\u043b\u044f Tabs / Tab","text":"

\u0422\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 tabs \u0438 tab \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445\u0441\u044f \u043f\u043e\u043b\u0435\u0439 \u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440:

tabs:\n  type: tabs\n  active: 1\n\n  fields:\n    content:\n      type: tab\n      title: PLUGIN_ADMIN.CONTENT\n\n      fields:\n\n        # .... other subfields\n\n    options:\n      type: tab\n      title: PLUGIN_ADMIN.OPTIONS\n\n      fields:\n\n        # .... other subfields\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 active \u041d\u043e\u043c\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438"},{"location":"forms/forms/fields-available/#pole-telefona","title":"\u041f\u043e\u043b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f tel \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442 input \u0442\u0438\u043f\u0430 tel.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.phone:\n  type: tel\n  label: 'Your Phone Number'\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 minlength \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 maxlength \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 validate.min \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 validate.max \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses readonly size style title validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#tekstovoe-pole","title":"\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435","text":"

\u041f\u043e\u043b\u0435 text \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u0430.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.title:\n  type: text\n  autofocus: true\n  label: PLUGIN_ADMIN.TITLE\n  minlength: 10\n  maxlength: 255\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 prepend \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 HTML \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u043b\u044f append \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 HTML \u0432 \u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u043b\u044f minlength \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 maxlength \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 validate.min \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 validate.max \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses readonly size style title validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-textarea","title":"\u041f\u043e\u043b\u0435 Textarea","text":"

\u041f\u043e\u043b\u0435 textarea \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.content:\n  type: textarea\n  autofocus: true\n  label: PLUGIN_ADMIN.CONTENT\n  minlength: 10\n  maxlength: 255\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 rows \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a cols \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 minlength \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 maxlength \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 validate.min \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 validate.max \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses readonly size style title validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#pole-perekliuchatelia","title":"\u041f\u043e\u043b\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f toggle - \u044d\u0442\u043e \u0442\u0438\u043f \u0432\u0432\u043e\u0434\u0430 \u0432\u043a\u043b/\u0432\u044b\u043a\u043b \u0441 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u043c\u0438 \u043c\u0435\u0442\u043a\u0430\u043c\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440:

summary.enabled:\n  type: toggle\n  label: PLUGIN_ADMIN.ENABLED\n  highlight: 1\n  help: PLUGIN_ADMIN.ENABLED_HELP\n  options:\n    1: PLUGIN_ADMIN.YES\n    0: PLUGIN_ADMIN.NO\n  validate:\n    type: bool\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 highlight \u041a\u043b\u0430\u0432\u0438\u0448\u0430 \u043e\u043f\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f (\u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0435\u043b\u0435\u043d\u044b\u043c) options \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u00ab\u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b default help label name style toggleable validate.required validate.type disabled"},{"location":"forms/forms/fields-available/#pole-url-adresa","title":"\u041f\u043e\u043b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430","text":"

\u0422\u0438\u043f \u043f\u043e\u043b\u044f url \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 URL-\u0430\u0434\u0440\u0435\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442 input \u0442\u0438\u043f\u0430 url.

\u041f\u0440\u0438\u043c\u0435\u0440:

header.phone:\n  type: url\n  label: 'Your Phone Number'\n
\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 minlength \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 maxlength \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 validate.min \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 validate.max \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u043e\u0431\u0449\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b autofocus classes default disabled help id label name novalidate outerclasses readonly size style title validate.required validate.pattern validate.message"},{"location":"forms/forms/fields-available/#nedokumentirovannye-v-nastoiashchee-vremia-polia","title":"\u041d\u0435\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u044f","text":"\u041f\u043e\u043b\u0435 \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 Array Avatar Color Columns Column Datetime Fieldset Formname Key Month Signature Switch Time Unique Id Value Week"},{"location":"forms/forms/form-options/","title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u043e\u0440\u043c\u044b","text":""},{"location":"forms/forms/form-options/#ssylka-parametry-formy","title":"\u0421\u0441\u044b\u043b\u043a\u0430: \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u043e\u0440\u043c\u044b","text":""},{"location":"forms/forms/form-options/#imia","title":"\u0418\u043c\u044f","text":"

\u0414\u043b\u044f \u0444\u043e\u0440\u043c \u043d\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043e\u0431\u0437\u043e\u0440\u0435 \u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0444\u043e\u0440\u043c\u044b, \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u043c\u044f \u0444\u043e\u0440\u043c\u044b:

form:\n    name: my-form\n

\u042d\u0442\u043e \u0438\u043c\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0438\u043c\u044f \u0444\u043e\u0440\u043c\u044b \u0441\u043b\u0443\u0436\u0438\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041d\u0430 \u0444\u043e\u0440\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0441 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"forms/forms/form-options/#metod","title":"\u041c\u0435\u0442\u043e\u0434","text":"

\u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0434\u043e\u043b\u0436\u043d\u0430 \u043b\u0438 \u0444\u043e\u0440\u043c\u0430 \u0431\u044b\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u0447\u0435\u0440\u0435\u0437 POST \u0438\u043b\u0438 GET. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - POST. \u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0435 file \u0432 \u0432\u0430\u0448\u0435\u0439 \u0444\u043e\u0440\u043c\u0435, \u043a \u043c\u0435\u0442\u043e\u0434\u0443 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e enctype=\"multipart/form-data\":

form:\n    method: GET\n
"},{"location":"forms/forms/form-options/#action","title":"Action","text":"

\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044d\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0444\u043e\u0440\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430. \u0411\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, .json) \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

form:\n    action: '/contact-us#contact-form'\n

\u0412\u044b \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0435\u0441\u043b\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435:

form:\n    action: /contact-us/ajax-process\n

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u0434\u043a\u0430\u0447\u043a\u0438 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c form-messages.html.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0438\u0436\u0435...

"},{"location":"forms/forms/form-options/#shablon","title":"\u0428\u0430\u0431\u043b\u043e\u043d","text":"

\u041e\u0431\u044b\u0447\u043d\u043e \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0443, \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u044e\u0431\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u0443\u0441\u043f\u0435\u0445\u0435/\u043d\u0435\u0443\u0434\u0430\u0447\u0435 \u0438\u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u0444\u043e\u0440\u043c\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d Twig. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e - \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 Ajax. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0448\u0430\u0431\u043b\u043e\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e HTML \u0434\u043b\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c/\u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JavaScript:

form:\n    template: form-messages\n
"},{"location":"forms/forms/form-options/#id","title":"ID","text":"

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0435 id \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0444\u043e\u0440\u043c\u044b. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u0444\u043e\u0440\u043c\u044b.

form:\n    id: my-form-id\n
"},{"location":"forms/forms/form-options/#klassy","title":"\u041a\u043b\u0430\u0441\u0441\u044b","text":"

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u044f\u0432\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0432 \u0444\u043e\u0440\u043c\u0435. \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

form:\n    classes: 'form-style form-surround'\n
"},{"location":"forms/forms/form-options/#atributy","title":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b","text":"

\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0444\u043e\u0440\u043c\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 key \u043d\u0430 \u0441\u0432\u043e\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u0430 value \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430.

form:\n    attributes:\n        key: value\n
"},{"location":"forms/forms/form-options/#vstroennye-oshibki","title":"\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438","text":"

\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0444\u0430\u0439\u043b\u0435 \u0438\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 Markdown \u0444\u043e\u0440\u043c\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a.

form:\n    inline_errors: true\n
"},{"location":"forms/forms/form-options/#proverka-na-storone-klienta","title":"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430","text":"

\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 HTML5. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 form.yaml \u0438\u043b\u0438 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0444\u043e\u0440\u043c\u044b.

form:\n    client_side_validation: false\n
"},{"location":"forms/forms/form-options/#proverka-xss","title":"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 XSS","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Grav 1.7 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 XSS \u0432\u043e \u0432\u0441\u0435\u0445 \u0444\u043e\u0440\u043c\u0430\u0445. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 > \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0438\u043b\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 XSS \u0432\u043e \u0432\u0441\u0435\u0439 \u0444\u043e\u0440\u043c\u0435:

form:\n    xss_check: false\n

\u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 XSS, \u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044f. \u0412\u0441\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. \u041f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0432\u0435\u0440\u043d\u0443\u0442\u0441\u044f \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438:

form:\n    xss_check:\n        enabled_rules:\n            on_events: false\n            invalid_protocols: false\n            moz_binding: false\n            html_inline_styles: false\n            dangerous_tags: false\n

\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u0438 \u0442\u0435\u0433\u0438:

form:\n    xss_check:\n        safe_protocols:\n            - javascript\n        safe_tags:\n            - iframe\n
"},{"location":"forms/forms/form-options/#keep-alive","title":"Keep Alive","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0438 \u0444\u043e\u0440\u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0430\u043d\u0441\u0430, \u0432\u043a\u043b\u044e\u0447\u0438\u0432 \u043e\u043f\u0446\u0438\u044e keep_alive \u0432 \u0444\u043e\u0440\u043c\u0435. \u0412\u043a\u043b\u044e\u0447\u0438\u0432 \u044d\u0442\u043e, \u0437\u0430\u043f\u0440\u043e\u0441 AJAX \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0432 Grav \u0434\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0430\u043d\u0441\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u00ab\u0441\u0432\u0435\u0436\u0438\u043c\u00bb:

form:\n    keep_alive: true\n
"},{"location":"forms/forms/form-options/#nabory-polei","title":"\u041d\u0430\u0431\u043e\u0440\u044b \u043f\u043e\u043b\u0435\u0439","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u0433\u0438 <fieldset></fieldset> \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0444\u043e\u0440\u043c\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 fieldset: \u0432 \u0444\u043e\u0440\u043c\u0435.

form:\n    name: Example Form\n    fields:\n        example:\n            type: fieldset\n            id: my-fieldset\n            legend: 'Test Fieldset'\n            fields:\n                first_field: { type: text, label: 'First Field' }\n                second_field: { type: text, label: 'Second Field' }\n

\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u0448\u0435 \u0444\u043e\u0440\u043c\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

<form action=\"/grav/example/forms\" class=\"\" id=\"my-example-form\" method=\"post\" name=\"Example Form\">\n  <fieldset id=\"my-fieldset\">\n    <legend>Test Fieldset</legend>\n    <div class=\"form-group\">\n      <div class=\"form-label-wrapper\">\n        <label class=\"form-label\">First Field</label>\n      </div>\n      <div class=\"form-data\" data-grav-default=\"null\" data-grav-disabled=\"true\" data-grav-field=\"text\">\n        <div class=\"form-input-wrapper\">\n          <input class=\"form-input\" name=\"data[first_field]\" type=\"text\" value=\"\">\n        </div>\n      </div>\n    </div>\n    <div class=\"form-group\">\n      <div class=\"form-label-wrapper\">\n        <label class=\"form-label\">Second Field</label>\n      </div>\n      <div class=\"form-data\" data-grav-default=\"null\" data-grav-disabled=\"true\" data-grav-field=\"text\">\n        <div class=\"form-input-wrapper\">\n          <input class=\"form-input\" name=\"data[second_field]\" type=\"text\" value=\"\">\n        </div>\n      </div>\n    </div>\n  </fieldset>\n</form>\n

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043b\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043d\u0430\u0431\u043e\u0440\u0435 \u043f\u043e\u043b\u0435\u0439 my-fieldset. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u0442\u0435\u0433\u0438 <legend></legend> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c legend:.

"},{"location":"forms/forms/how-to-ajax-submission/","title":"\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 Ajax","text":""},{"location":"forms/forms/how-to-ajax-submission/#kak-sdelat-otpravku-cherez-ajax","title":"\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 Ajax","text":""},{"location":"forms/forms/how-to-ajax-submission/#otpravka-form-cherez-xhr-ajax","title":"\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0444\u043e\u0440\u043c \u0447\u0435\u0440\u0435\u0437 XHR/Ajax","text":"

\u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u043e\u0440\u043c\u044b \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0444\u043e\u0440\u043c\u044b \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u0441\u0442\u0438\u043b\u0435 HTML, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 HTML-\u0444\u043e\u0440\u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 POST, \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 GET (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - POST). \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0444\u043e\u0440\u043c\u0443 (\u0438\u043b\u0438 \u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443), \u0433\u0434\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0444\u043e\u0440\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438.

\u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0444\u043e\u0440\u043c\u044b \u0447\u0435\u0440\u0435\u0437 JavaScript \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Ajax \u0438\u043b\u0438 XHR. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Grav \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0444\u043e\u0440\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.

"},{"location":"forms/forms/how-to-ajax-submission/#avtomaticheskii-podkhod-trebuetsia-plagin-form-s-versiei-v7-3-0","title":"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 (\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d Form \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 >= v7.3.0)","text":"

\u0421 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 From 7.3.0 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XHR, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.

\u0427\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 \u0447\u0435\u0440\u0442\u0451\u0436 \u0444\u043e\u0440\u043c\u044b:

xhr_submit: true\n

\u0412\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c action:, template: \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 id:. \u041f\u043b\u0430\u0433\u0438\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \"\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c\" \u0434\u0430\u0436\u0435 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 ajax-\u0444\u043e\u0440\u043c\u0430\u043c\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d form-xhr.html.twig, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e JS-\u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430.

!! \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0432\u0441\u044f \u0444\u043e\u0440\u043c\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 XHR-\u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0435\u0441\u044c HTML \u0444\u043e\u0440\u043c\u044b \u0438\u0437 \u043e\u0442\u0432\u0435\u0442\u0430. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043d\u043e \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.

!!! \u041a\u043e\u0434 Javacript, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f XHR-\u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 form/layouts/xhr.html.twig. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 templates \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b (\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0443\u0442\u0435\u0439) \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.

"},{"location":"forms/forms/how-to-ajax-submission/#ruchnoi-podkhod-trebuetsia-plagin-form-s-versiei-v7-3-0","title":"\u0420\u0443\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 (\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d Form \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 < v7.3.0)","text":""},{"location":"forms/forms/how-to-ajax-submission/#sozdanie-formy","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u044b","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0444\u043e\u0440\u043c\u0443 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0447\u0430\u0441\u0442\u044f\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Ajax. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c: forms/ajax-test/ \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0444\u043e\u0440\u043c\u044b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c form.md:

---\ntitle: \u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u0444\u043e\u0440\u043c\u0430 Ajax\nform:\n  name: ajax-test-form\n  action: '/forms/ajax-test'\n  template: form-messages\n  refresh_prevention: true\n\n  fields:\n    name:\n      label: \u0412\u0430\u0448\u0435 \u0438\u043c\u044f\n      type: text\n\n  buttons:\n    submit:\n      type: submit\n      value: \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c\n\n  process:\n    message: '\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u043c \u0432\u0430\u0441 \u0437\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e!'\n---\n

\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0444\u043e\u0440\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0435 \u0438\u043c\u044f \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043d\u043e\u043f\u043a\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u2014 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c template: form-messages. \u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0444\u043e\u0440\u043c\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d Twig, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u043e\u0440\u043c\u044b. \u0414\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 Ajax \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0423\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d form-messages.html.twig, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0444\u043e\u0440\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e.

\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 action: /forms/ajax-test, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 ajax \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0439 URL, \u0430 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0444\u043e\u0440\u043c\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c Ajax, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430 \u00ab\u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439\u00bb \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435. \u042d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0444\u043e\u0440\u043c\u044b, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442.

"},{"location":"forms/forms/how-to-ajax-submission/#soderzhanie-stranitsy","title":"\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041d\u0430 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e HTML \u0438 JavaScript:

Vanilla JSjQuery
<div id=\"form-result\"></div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    const form = document.querySelector('#ajax-test-form');\n    form.addEventListener('submit', function(event) {\n        event.preventDefault();\n\n        const result = document.querySelector('#form-result');\n        const action = form.getAttribute('action');\n        const method = form.getAttribute('method');\n\n        fetch(action, {\n            method: method,\n            body: new FormData(form)\n        })\n        .then(function(response) {\n            if (response.ok) {\n                return response.text();\n            } else {\n                return response.json();\n            }\n        })\n        .then(function(output) {\n            if (result) {\n                result.innerHTML = output;\n            }\n        })\n        .catch(function(error) {\n            if (result) {\n                result.innerHTML = '\u041e\u0448\u0438\u0431\u043a\u0430: ' + error;\n            }\n\n            throw new Error(error);\n        });\n    });\n});\n</script>\n
<div id=\"form-result\"></div>\n\n<script>\n$(document).ready(function(){\n\n    var form = $('#ajax-test-form');\n    form.submit(function(e) {\n        // prevent form submission\n        e.preventDefault();\n\n        // submit the form via Ajax\n        $.ajax({\n            url: form.attr('action'),\n            type: form.attr('method'),\n            dataType: 'html',\n            data: form.serialize(),\n            success: function(result) {\n                // Inject the result in the HTML\n                $('#form-result').html(result);\n            }\n        });\n    });\n});\n</script>\n

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c div \u0441 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c #form-result, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0444\u043e\u0440\u043c\u044b.

\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0437\u0434\u0435\u0441\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 JQuery \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b, \u043d\u043e, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 JavaScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0444\u043e\u0440\u043c\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c Ajax-\u0432\u044b\u0437\u043e\u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0444\u043e\u0440\u043c\u044b \u0441 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0444\u043e\u0440\u043c\u044b. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u0442 div, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435.

"},{"location":"forms/forms/how-to-forms-in-modular-pages/","title":"\u041a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445","text":""},{"location":"forms/forms/how-to-forms-in-modular-pages/#kak-razmestit-formy-na-modulnykh-stranitsakh","title":"\u041a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445","text":""},{"location":"forms/forms/how-to-forms-in-modular-pages/#ispolzovanie-form-na-modulnykh-stranitsakh","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0430\u0439\u043b templates/forms/form.html.twig, \u043e\u043d \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c, \u043d\u043e \u043d\u0435 \u0431\u043e\u0439\u0442\u0435\u0441\u044c \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0444\u043e\u0440\u043c \u0438\u0437 Antimatter, \u0442\u0435\u043c\u044b Grav \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:

  • templates/form.html.twig
  • templates/formdata.html.twig

\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0441 \u0442\u0438\u043f\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b form.md

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: 01.your-modular-page/_contact/form.md.

\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 form.md \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430 \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443.

\u0412\u0430\u0436\u043d\u043e: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c

---\ncache_enable: false\n---\n

\u0432 \u044d\u0442\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0431\u0443\u0434\u0435\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c, \u0444\u043e\u0440\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0435 12 \u0447\u0430\u0441\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 12-\u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u043a\u044d\u0448 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d. \u042d\u0442\u043e\u0442 \u0448\u0430\u0433 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0445 \u0444\u043e\u0440\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, modular.md.

\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 modular.md \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u044b \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u0442. \u0434., \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0431\u044b \u044d\u0442\u043e \u0431\u044b\u043b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0444\u0430\u0439\u043b\u0430 form.md \u00ab\u043d\u0430 \u0432\u0441\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443\u00bb. \u0421 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044f form.action.

\u0412 Form v2.0 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u0444\u043e\u0440\u043c\u0443. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d, \u043f\u043b\u0430\u0433\u0438\u043d \u0444\u043e\u0440\u043c\u044b \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u00ab\u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u00bb, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b 1.0.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

---\ncontent:\n    items: '@self.modular'\n\nform:\n    action: /your-modular-page\n    name: my-nice-form\n    fields:\n        -\n            name: name\n            label: Name\n            placeholder: 'Enter your name'\n            autofocus: 'on'\n            autocomplete: 'on'\n            type: text\n            default: test\n\n    buttons:\n        -\n            type: submit\n            value: Submit\n\n    process:\n        -\n            message: 'Thank you for your feedback!'\n---\n

\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0444\u043e\u0440\u043c\u044b \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 action \u0441 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b

\u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435. \u042d\u0442\u043e\u0442 \u0448\u0430\u0433 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u044f\u0432\u043d\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 form.action, \u043a\u043e\u0434 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0449\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u043e, \u0431\u0443\u0434\u0443\u0447\u0438 \u0444\u043e\u0440\u043c\u043e\u0439 \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0430 \u043d\u0435 \u043d\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043f\u0443\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u0435\u043d \u0438 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0444\u043e\u0440\u043c\u044b.

\u0418\u0442\u0430\u043a, \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, site.com/my-page, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 form: action: /my-page \u0432 modular.md. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 form: action: /home

"},{"location":"forms/forms/how-to-forms-in-modular-pages/#zhivoi-primer","title":"\u0416\u0438\u0432\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440","text":"

\u0412 \u0441\u043a\u0435\u043b\u0435\u0442\u0435 Deliver \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430:

Live page

Page markdown file

"},{"location":"forms/forms/how-to-forms-in-modular-pages/#ustranenie-nepoladok-v-formakh-na-modulnykh-stranitsakh","title":"\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a \u0432 \u0444\u043e\u0440\u043c\u0430\u0445 \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445","text":"

\u041b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043a\u0438 \u0441 \u0444\u043e\u0440\u043c\u043e\u0439 - \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043a\u043e\u0440\u043d\u044f\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0434\u043d\u0443 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a.

  • \u042f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u00ab\u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443\u00bb, \u0443\u0431\u0435\u0434\u0438\u0432\u0448\u0438\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0432 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0443\u044e.
  • \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0441\u043a\u0435\u043b\u0435\u0442\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u043c\u044b Antimatter, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u0443\u0436\u0435 \u043d\u0443\u0436\u043d\u044b.
  • \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d Assets, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435/\u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0435\u0433\u043e. \u0418\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0444\u043e\u0440\u043c, \u0441\u043a\u043e\u0440\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430.
"},{"location":"forms/forms/reference-form-actions/","title":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0444\u043e\u0440\u043c\u044b","text":""},{"location":"forms/forms/reference-form-actions/#ssylka-deistviia-formy","title":"\u0421\u0441\u044b\u043b\u043a\u0430: \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0444\u043e\u0440\u043c\u044b","text":""},{"location":"forms/forms/reference-form-actions/#deistviia-formy","title":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0444\u043e\u0440\u043c\u044b","text":"

\u041c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0444\u043e\u0440\u043c\u044b \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.

"},{"location":"forms/forms/reference-form-actions/#imeil","title":"\u0418\u043c\u0435\u0439\u043b","text":"

\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u043e\u043f\u0446\u0438\u044f\u043c\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440:

process:\n    - email:\n        from: \"{{ config.plugins.email.from }}\"\n        to: \"{{ config.plugins.email.to }}\"\n        subject: \"Contact by {{ form.value.name|e }}\"\n        body: \"{% include 'forms/data.html.twig' %}\"\n

\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b (\u044d\u0442\u043e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430, \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0451 \u0441\u0435\u0431\u0435). \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c from \u0438 to, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u041f\u0438\u0441\u044c\u043c\u043e \u0438\u043c\u0435\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443 \u0438 \u0442\u0435\u043b\u043e. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0435\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u043c forms/data.html.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 (\u043e\u043d \u0435\u0441\u0442\u044c \u0432 Antimatter \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0435\u043c\u0430\u0445, \u043d\u043e \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0442\u0435\u043c\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0435\u0433\u043e).

Antimatter \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0432

{% for field in form.fields %}\n    <div><strong>{{ field.label }}</strong>: {{ string(form.value(field.name)|e) }}</div>\n{% endfor %}\n

\u041a\u043e\u0440\u043e\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0438\u0445 \u0432 \u0442\u0435\u043b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430.

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u0441\u043c. \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a \u043c\u043e\u0434\u0443\u043b\u044e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0435 \u0442\u0435\u043b\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f (\u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043f\u0430\u043c\u0430), reply_to \u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f.

"},{"location":"forms/forms/reference-form-actions/#atribut-dinamicheskoi-elektronnoi-pochty","title":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0435 email.from \u0438\u0437 \u0432\u0432\u043e\u0434\u0430 \u0444\u043e\u0440\u043c\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

from: \"{{ form.value.email }}\"

\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u043b\u0435 \u00ab\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u0430\u00bb \u0438\u0437 \u0444\u043e\u0440\u043c\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u00ab\u043e\u0442\u00bb. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0441\u0430\u0439\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u0438 \u0441\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0432 \u0444\u043e\u0440\u043c\u0435.

"},{"location":"forms/forms/reference-form-actions/#perenapravlenie","title":"\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435","text":"

\u041f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432\u044b \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435, \u0432\u0430\u043c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0435\u0446 \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.

process:\n    - redirect: '/forms/landing-page'\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043b\u0438 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f redirect \u0438\u0437 \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0444\u043e\u0440\u043c\u044b \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0444\u043e\u0440\u043c\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

redirect: \"/path to/location/{{ form.value.hiddenfield }}\"

\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u043b\u0435 \"hiddenfield\" \u0438\u0437 \u0444\u043e\u0440\u043c\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0444\u043e\u0440\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f.

"},{"location":"forms/forms/reference-form-actions/#soobshchenie","title":"\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435","text":"

\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0444\u043e\u0440\u043c\u044b.

process:\n    - message: \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448 \u043e\u0442\u0437\u044b\u0432!\n    - display: thankyou\n

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 form.

\u041e\u0434\u043d\u0430\u043a\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 display, \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 redirect.

"},{"location":"forms/forms/reference-form-actions/#soobshchenie-o-proverke","title":"\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u043d\u0435\u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

username:\n   type: text\n   label: \u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\n   validate:\n     required: true\n     message: \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438!\n

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0443\u0432\u0438\u0434\u044f\u0442 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.

"},{"location":"forms/forms/reference-form-actions/#display","title":"Display","text":"

\u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b \u0435\u0451 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0444\u043e\u0440\u043c\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 /form, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 /form/thankyou \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430:

process:\n    - display: thankyou\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 site.com/thankyou, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a \u043d\u0435\u043c\u0443 /: display: /thankyou/.

\u041f\u043b\u0430\u0433\u0438\u043d Form \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d formdata, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b. \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 pages/form/thankyou/formdata.md.

Antimatter \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0442\u0435\u043c\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d Twig formdata.html.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

{% extends 'partials/base.html.twig' %}\n\n{% block content %}\n\n    {{ content }}\n\n    <div class=\"alert\">{{ form.message }}</div>\n    <p>Here is the summary of what you wrote to us:</p>\n\n    {% include \"forms/data.html.twig\" %}\n\n{% endblock %}\n

\u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 thankyou/formdata.md

---\ntitle: \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e!\ncache_enable: false\nprocess:\n    twig: true\n---\n\n## \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e!\n

\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043d\u0430\u0434\u043f\u0438\u0441\u044c\u044e \u00ab\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e!\u00bb, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b, \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0442\u0438\u043f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0439. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u044e \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0442\u0438\u043f \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"forms/forms/reference-form-actions/#sokhranenie","title":"\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435","text":"

\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0432 \u0444\u0430\u0439\u043b. \u0424\u0430\u0439\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 user/data \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c form.name. \u0424\u043e\u0440\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0438\u043c\u044f \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0430 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u043d\u0435\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u043e\u0432\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

fileprefix \u0438body \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 Twig.

process:\n    - save:\n        fileprefix: feedback-\n        dateformat: Ymd-His-u\n        extension: txt\n        body: \"{% include 'forms/data.txt.twig' %}\"\n        operation: create\n

\u0422\u0435\u043b\u043e \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0442\u0435\u043c\u044b templates/forms/data.html.twig, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e Antimatter \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0435\u043c\u0430\u043c\u0438.

\u00ab\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u00bb \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e create (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b, \u043b\u0438\u0431\u043e add \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b.

\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 add \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430: \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043c. \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0438\u0436\u0435.

process:\n    - save:\n        filename: feedback.txt\n        body: \"{% include 'forms/data.txt.twig' %}\"\n        operation: add\n
"},{"location":"forms/forms/reference-form-actions/#kapcha","title":"\u041a\u0430\u043f\u0447\u0430","text":"

\u0427\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0432\u043e\u0434\u0430 \u043a\u0430\u043f\u0447\u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432\u0432\u043e\u0434\u0430 \u043a\u0430\u043f\u0447\u0438.

    process:\n        - captcha:\n            recaptcha_secret: ENTER_YOUR_CAPTCHA_SECRET_KEY\n

recaptcha_secret \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0444\u043e\u0440\u043c\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0438\u0445 \u0442\u0430\u043c.

"},{"location":"forms/forms/reference-form-actions/#ip-adres-polzovatelia","title":"IP-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","text":"

\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435. \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0435\u0433\u043e \u043d\u0430\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b/\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 form.md, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u0432\u044b\u0432\u043e\u0434\u0430.

process:\n    - ip:\n        label: User IP Address\n
"},{"location":"forms/forms/reference-form-actions/#timestamp","title":"Timestamp","text":"

\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0442\u043c\u0435\u0442\u043a\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b. \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0435\u0433\u043e \u043d\u0430\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b/\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 form.md, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u0432\u044b\u0432\u043e\u0434\u0430.

process:\n    - timestamp:\n        label: Submission Timestamp\n
"},{"location":"forms/forms/reference-form-actions/#sbros-formy-posle-otpravki","title":"\u0421\u0431\u0440\u043e\u0441 \u0444\u043e\u0440\u043c\u044b \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0444\u043e\u0440\u043c\u0430 \u043d\u0435 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f display \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0444\u043e\u0440\u043c\u044b, \u043e\u043d\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 reset:

process:\n    - reset: true\n
"},{"location":"forms/forms/reference-form-actions/#zapominanie-znachenii-polei","title":"\u0417\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u0435\u0439","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 remember, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0441\u0432\u043e\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u00ab\u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0435\u0439. \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0444\u043e\u0440\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u0435.

HTML5 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d Form \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u044d\u0442\u0438\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u043e\u043b\u0435\u0439.

\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 remember \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u0443\u043a\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0438 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0433\u0434\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435.

\u0427\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u0435 \u0438\u043c\u0435\u043d\u0430 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u0444\u043e\u0440\u043c\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a \u0432\u0440\u0430\u0447\u0443. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043e\u043d\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0434\u043a\u043e \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0438 \u0438\u0445 \u0441\u043a\u0443\u0447\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e.

process:\n    - remember:\n        - referrer-name\n        - referrer-address\n        - referrer-specialty\n        - preferred-practitioner\n
"},{"location":"forms/forms/reference-form-actions/#nastraivaemye-deistviia","title":"\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u00ab\u0437\u0430\u0446\u0435\u043f\u0438\u0442\u044c\u0441\u044f\u00bb \u0437\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0444\u043e\u0440\u043c\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u0430\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0439\u0442\u0435 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043f\u043e\u043b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0444\u043e\u0440\u043c\u044b \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 yourAction.

process:\n    yourAction: true\n

\u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d.

\u0412 \u0441\u0432\u043e\u0435\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 PHP \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0439\u0442\u0435\u0441\u044c \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f onFormProcessed

<?php\n\nnamespace Grav\\Plugin;\nuse Grav\\Common\\Plugin;\nuse RocketTheme\\Toolbox\\Event\\Event;\n\nclass EmailPlugin extends Plugin\n{\n    public static function getSubscribedEvents()\n    {\n        return [\n            'onFormProcessed' => ['onFormProcessed', 0]\n        ];\n    }\n}\n

\u0417\u0430\u0442\u0435\u043c \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f saveToDatabase:

<?php\n\n    public function onFormProcessed(Event $event)\n    {\n        $form = $event['form'];\n        $action = $event['action'];\n        $params = $event['params'];\n\n        switch ($action) {\n            case 'yourAction':\n                //do what you want\n        }\n    }\n

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a, \u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0444\u043e\u0440\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0432\u044b\u0437\u0432\u0430\u0432 stopPropagation \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 $event:

$event->stopPropagation();\nreturn;\n

\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u0444\u043e\u0440\u043c\u044b \u0438 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b.

"},{"location":"forms/forms/reference-form-actions/#primer-obrabotki-nestandartnoi-formy","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b","text":"

\u041f\u043b\u0430\u0433\u0438\u043d Form \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0438 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c. \u042d\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (Login).

\u041e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b login.md:

title: Login\ntemplate: form\n\nform:\n    name: login\n\n    fields:\n        - name: username\n          type: text\n          placeholder: Username\n          autofocus: true\n\n        - name: password\n          type: password\n          placeholder: Password\n

\u041f\u043b\u0430\u0433\u0438\u043d Forms \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0443. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u00ab\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u00bb.

\u0422\u0430\u043a\u0436\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0444\u043e\u0440\u043c\u044b buttons, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 templates/login.html.twig. \u0417\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u044b \u00ab\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u00bb \u0438 \u00ab\u0437\u0430\u0434\u0430\u0447\u0430\u00bb.

\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 - \u044d\u0442\u043e login.login, \u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442 \"\u0412\u043e\u0439\u0442\u0438\" \u0432 \u0444\u043e\u0440\u043c\u0435, Grav \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onTask.login.login.

user/plugins/login/login.php \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a onTask.login.login \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 classes/controller.php, \u0438 \u0442\u0430\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.

"},{"location":"hints-tips/metadata/","title":"\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u043b\u043e\u0433\u043e\u0432","text":""},{"location":"hints-tips/metadata/#metadannye-blogov","title":"\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u043b\u043e\u0433\u043e\u0432","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Grav \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0432\u043e\u0435\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u0433\u0430, \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043b\u044e\u0434\u0438 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u0432\u0430\u0448\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Facebook, Twitter \u0438 \u0442. \u0434.

\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 Grav.

\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u0441 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043a WordPress, \u0433\u0434\u0435 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435 \u043e\u0441\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.

\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

---\ntitle: \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435\npublish_date: \u0414\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435\ndate: \u0414\u0430\u0442\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435\nmetadata:\n    'og:title': \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435\n    'og:type': article\n    'og:description': \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043e \u0447\u0435\u043c \u0438\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043b\u044e\u0434\u0438 \u043f\u043e\u0434\u0435\u043b\u044f\u0442\u0441\u044f \u0432\u0430\u0448\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445.\n    'og:url': URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435\n    'og:site_name': \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u043e\u0433\u0435.\n    'og:locale': \u042f\u0437\u044b\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u0430\u0448\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0431\u043b\u043e\u0433\u0435.\n    'og:image': \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u0437\u0434\u0435\u0441\u044c \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0435\u0441\u044c, \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e \u043f\u0440\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445.\n    'twitter:card' : \u0422\u0438\u043f \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 Twitter, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.\n    'twitter:site' : \u0418\u043c\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0432 Twitter\n    'twitter:title' : \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435\n    'twitter:description' : \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043e \u0447\u0435\u043c \u0438\u0434\u0435\u0442 \u0440\u0435\u0447\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043b\u044e\u0434\u0438 \u043f\u043e\u0434\u0435\u043b\u044f\u0442\u0441\u044f \u0432\u0430\u0448\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445.\n    'twitter:image' : \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u0437\u0434\u0435\u0441\u044c \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0435\u0441\u044c, \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e \u043f\u0440\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445.\n    'twitter:creator': \u0414\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0442\u0432\u0438\u0442\u0442\u0435\u0440\u0430 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435.\ntaxonomy:\n    category: [\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0431\u043b\u043e\u0433\u0435]\n    tag: [\u0442\u0435\u0433 1, \u0442\u0435\u0433 2, \u0442\u0435\u0433 3, \u0442\u0435\u0433 4]\n    author: \u0418\u043c\u044f \u0430\u0432\u0442\u043e\u0440\u0430\n---\n

\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430\u0445 Twitter

\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 Open Graph

"},{"location":"plugins/event-hooks/","title":"\u0425\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439","text":""},{"location":"plugins/event-hooks/#khuki-sobytii","title":"\u0425\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439","text":"

\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435, \u0432\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0431\u044b\u043b\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u0434\u0432\u0443\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 onPluginsInitialized \u0438 onPageInitialized \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0445\u0443\u043a\u0430\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 Grav.

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0449\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 Grav, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0445\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432. \u0425\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u044f\u043c\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u043c\u0443 \u0446\u0438\u043a\u043b\u0443 Grav.

"},{"location":"plugins/event-hooks/#poriadok-sobytii","title":"\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439","text":"

\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 Grav \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0438 \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b:

  1. onFatalException (\u043d\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430, \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f)
  2. PluginsLoadedEvent class (1.7)
  3. PluginsLoadedEvent class (1.7)
  4. onPluginsInitialized
  5. FlexRegisterEvent class (1.7)
  6. onThemeInitialized
  7. onRequestHandlerInit (1.6)
  8. onTask (1.6)
  9. onTask.{task}
  10. onAction (1.6)
  11. onAction.{action} (1.6)
  12. onBackupsInitialized
  13. onSchedulerInitialized (1.6)
  14. onAssetsInitialized
  15. onTwigTemplatePaths
  16. onTwigLoader
  17. onTwigInitialized
  18. onTwigExtensions
  19. onBuildPagesInitialized (\u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446)
  20. onPageProcessed (\u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0435\u0449\u0451 \u043d\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f)
  21. onFormPageHeaderProcessed (1.6) (\u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0435\u0449\u0451 \u043d\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f)
  22. onFolderProcessed (\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438)
  23. onPagesInitialized
  24. onPageInitialized
  25. onPageContentRaw (\u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0435\u0449\u0451 \u043d\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f)
  26. onMarkdownInitialized
  27. onPageContentProcessed (\u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0435\u0449\u0451 \u043d\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f)
  28. onPageContent (\u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 Page::content() \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.)
  29. onPageNotFound
  30. onPageAction (1.6)
  31. onPageAction.{action} (1.6)
  32. onPageTask (1.6)
  33. onPageTask.{task} (1.6)
  34. onTwigPageVariables (\u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0435\u0449\u0451 \u043d\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f)
  35. onHttpPostFilter (1.5.2)
  36. onTwigSiteVariables
  37. onCollectionProcessed (\u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438)
  38. onOutputGenerated
  39. onPageHeaders
  40. onOutputRendered
  41. onShutdown

\u0420\u0430\u0437\u043d\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f:

  1. onBlueprintCreated
  2. onTwigTemplateVariables
  3. onTwigStringVariables
  4. onBeforeDownload
  5. onPageFallBackUrl
  6. onMediaLocate
  7. onGetPageBlueprints
  8. onGetPageTemplates
  9. onFlexObjectRender (1.6)
  10. onFlexCollectionRender (1.6)
  11. onBeforeCacheClear
  12. onImageMediumSaved (ImageFile)
  13. onAfterCacheClear (1.7)
  14. onHttpPostFilter (1.7)
  15. PermissionsRegisterEvent class (1.7)
"},{"location":"plugins/event-hooks/#khuki-sobytii-iadra-grav","title":"\u0425\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u044f\u0434\u0440\u0430 Grav","text":"

\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 Grav, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:

"},{"location":"plugins/event-hooks/#onfatalexception","title":"onFatalException","text":"

\u042d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0435\u0441\u043b\u0438 PHP \u0432\u044b\u0434\u0430\u0435\u0442 \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c problems \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c Grav \u0432\u044b\u0434\u0430\u0435\u0442 \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.

"},{"location":"plugins/event-hooks/#onpluginsinitialized","title":"onPluginsInitialized","text":"

\u042d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u044b\u043b\u0438 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b:

  • Uri
  • Config
  • Debugger
  • Cache
  • Plugins

\u041f\u043b\u0430\u0433\u0438\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0432\u043e\u043e\u0431\u0449\u0435, \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043e\u043f\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 enabled: false.

"},{"location":"plugins/event-hooks/#onassetsinitialized","title":"onAssetsInitialized","text":"

\u0421\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0433\u043e\u0442\u043e\u0432 \u043a \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0438\u043c\u0438.

"},{"location":"plugins/event-hooks/#onpagesinitialized","title":"onPagesInitialized","text":"

\u042d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 Grav user/pages \u0431\u044b\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 Pages.

"},{"location":"plugins/event-hooks/#onpagenotfound","title":"onPageNotFound","text":"

\u042d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e, \u0435\u0441\u043b\u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c error \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 404.

"},{"location":"plugins/event-hooks/#onpageinitialized","title":"onPageInitialized","text":"

\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 URL \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 Page.

"},{"location":"plugins/event-hooks/#onoutputgenerated","title":"onOutputGenerated","text":"

\u0412\u044b\u0432\u043e\u0434 \u0431\u044b\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0441\u0442\u0440\u043e\u043a\u0443 HTML.

"},{"location":"plugins/event-hooks/#onpageheaders","title":"onPageHeaders","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"plugins/event-hooks/#onoutputrendered","title":"onOutputRendered","text":"

\u0412\u044b\u0432\u043e\u0434 \u0431\u044b\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0439.

"},{"location":"plugins/event-hooks/#onshutdown","title":"onShutdown","text":"

\u041d\u043e\u0432\u043e\u0435 \u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a Grav \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0431\u044b\u043b\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u043e. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0437\u0430\u0434\u0430\u043d\u0438\u0439.

"},{"location":"plugins/event-hooks/#onbeforedownload","title":"onBeforeDownload","text":"

\u042d\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 file. \u042d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f/\u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430.

"},{"location":"plugins/event-hooks/#ongetpagetemplates","title":"onGetPageTemplates","text":"

\u042d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0438 \u044f\u0434\u0440\u0430 \u0442\u0435\u043c\u044b. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d.

\u041f\u0440\u0438\u043c\u0435\u0440

/**\n * Add page template types.\n */\npublic function onGetPageTemplates(Event $event)\n{\n    /** @var Types $types */\n    $types = $event->types;\n    $types->register('downloads');\n}\n

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c), \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0441\u044f \u0432 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u0435 \u0442\u0438\u043f\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b). \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0442\u0438\u043f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 downloads, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 downloads \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b downloads.html.twig.

"},{"location":"plugins/event-hooks/#ongetpageblueprints","title":"onGetPageBlueprints","text":"

\u042d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u0442\u0430\u043a\u043e\u0435 \u043a\u0430\u043a onGetPageTemplates, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u043b\u044f \u0442\u0435\u043c\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0438.

\u041f\u0440\u0438\u043c\u0435\u0440

<?php\n\n$scanBlueprintsAndTemplates = function () use ($grav) {\n    // Scan blueprints\n    $event = new Event();\n    $event->types = self::$types;\n    $grav->fireEvent('onGetPageBlueprints', $event);\n\n    self::$types->scanBlueprints('theme://blueprints/');\n\n    // Scan templates\n    $event = new Event();\n    $event->types = self::$types;\n    $grav->fireEvent('onGetPageTemplates', $event);\n\n    self::$types->scanTemplates('theme://templates/');\n};\n

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0445\u0443\u043a\u0438 onGetPageTemplates \u0438 onGetPageBlueprints, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u044b (\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438 \u0447\u0435\u0440\u0442\u0435\u0436\u0438) \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 Grav \u0434\u043b\u044f \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0446\u0435\u043b\u0435\u0439.

"},{"location":"plugins/event-hooks/#khuki-sobytii-twig","title":"\u0425\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 Twig","text":"

Twig \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439.

"},{"location":"plugins/event-hooks/#ontwigtemplatepaths","title":"onTwigTemplatePaths","text":"

\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0443\u0442\u0435\u0439 \u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c \u0431\u044b\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 Twig. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 Twig \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435.

\u041f\u0440\u0438\u043c\u0435\u0440

<?php\n\n/**\n * Add template directory to twig lookup path.\n */\n public function onTwigTemplatePaths()\n {\n     $this->grav['twig']->twig_paths[] = __DIR__ . '/templates';\n }\n
"},{"location":"plugins/event-hooks/#ontwiginitialized","title":"onTwigInitialized","text":"

\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 Twig \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d.

"},{"location":"plugins/event-hooks/#ontwigextensions","title":"onTwigExtensions","text":"

\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Twig \u0431\u044b\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Twig, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439.

"},{"location":"plugins/event-hooks/#ontwigpagevariables","title":"onTwigPageVariables","text":"

\u0413\u0434\u0435 Twig \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0435 process: twig: true \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 YAML \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 Twig \u043b\u044e\u0431\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b Twig \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.

"},{"location":"plugins/event-hooks/#ontwigsitevariables","title":"onTwigSiteVariables","text":"

\u0413\u0434\u0435 Twig \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u0430\u0439\u0442\u0430. \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 Twig \u043b\u044e\u0431\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b Twig \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.

"},{"location":"plugins/event-hooks/#khuki-sobytii-kollektsii","title":"\u0425\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":""},{"location":"plugins/event-hooks/#oncollectionprocessed","title":"onCollectionProcessed","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430, \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.

"},{"location":"plugins/event-hooks/#khuki-sobytii-stranitsy","title":"\u0425\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":""},{"location":"plugins/event-hooks/#onbuildpagesinitialized","title":"onBuildPagesInitialized","text":"

\u042d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u0441\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u044d\u0448\u0430 \u0438\u0441\u0442\u0435\u043a \u0438\u043b\u0438 \u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.

"},{"location":"plugins/event-hooks/#onblueprintcreated","title":"onBlueprintCreated","text":"

\u042d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u043e\u0440\u043c.

"},{"location":"plugins/event-hooks/#onpagecontentraw","title":"onPageContentRaw","text":"

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Grav. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u044d\u0448 \u043e\u0447\u0438\u0449\u0435\u043d \u0438\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430.

"},{"location":"plugins/event-hooks/#onpageprocessed","title":"onPageProcessed","text":"

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430. \u042d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Grav. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u044d\u0448 \u043e\u0447\u0438\u0449\u0435\u043d \u0438\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430.

"},{"location":"plugins/event-hooks/#onmarkdowninitialized","title":"onMarkdownInitialized","text":"

\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Markdown. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Parsedown \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0421\u043c. \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 PR.

"},{"location":"plugins/event-hooks/#onpagecontentprocessed","title":"onPageContentProcessed","text":"

\u042d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b content() \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u043e\u0441\u0442\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043a\u044d\u0448\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u044d\u0448 \u043e\u0447\u0438\u0449\u0435\u043d \u0438\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430.

"},{"location":"plugins/event-hooks/#onfolderprocessed","title":"onFolderProcessed","text":"

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0430\u043f\u043a\u0430 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430. \u041e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Grav. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u044d\u0448 \u043e\u0447\u0438\u0449\u0435\u043d \u0438\u043b\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u043a\u044d\u0448\u0430.

"},{"location":"plugins/event-hooks/#onpagefallbackurl","title":"onPageFallBackUrl","text":"

\u0415\u0441\u043b\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, Grav \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430\u0440\u0435\u0441\u0443\u0440\u0441\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0421\u043e\u0431\u044b\u0442\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.

"},{"location":"plugins/event-hooks/#onmedialocate","title":"onMediaLocate","text":"

\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043c\u0435\u0434\u0438\u0430-\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043e\u0442\u0440\u044b\u0432\u043a\u043e\u0432 (excerpts).

"},{"location":"plugins/event-hooks/#ontwigloader","title":"onTwigLoader","text":"

\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432 \u0438\u043c\u0435\u043d \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0432\u0443\u043c\u044f \u043d\u043e\u0432\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 Twig: Twig::addPath($path, $namespace) \u0438 Twig::prependPath($path, $namespace).

"},{"location":"plugins/grav-lifecycle/","title":"\u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b Grav","text":""},{"location":"plugins/grav-lifecycle/#zhiznennyi-tsikl-grav","title":"\u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b Grav","text":"

\u0427\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Grav, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c Grav \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. \u042d\u0442\u043e \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b Grav:

index.php

1. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 PHP, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u0432\u0435\u0440\u0441\u0438\u044f **7.3.6**\n2. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432\n3. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 Grav\n

Grav.php

1. \u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c `load()`\n2. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `loader`\n3. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `debugger`\n4. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `grav` (\u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e)\n5. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n6. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c Service Providers\n    * Accounts Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `permissions` (1.7)\n        2. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `accounts` (1.6)\n        3. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `user_groups` (1.7)\n        4. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `users` _(\u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e)_\n    * Assets Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `assets`\n    * Backups Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `backups` (1.6)\n    * Config Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `setup`\n        2. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `blueprints`\n        3. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `config`\n        4. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `languages`\n        5. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `language`\n    * Error Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `error`\n    * Filesystem Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `filesystem`\n    * Flex Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `flex` (1.7)\n    * Inflector Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `inflector`\n    * Logger Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `log`\n    * Output Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `output`\n    * Pages Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `pages`\n        2. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `page`\n    * Request Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `request` (1.7)\n    * Scheduler Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `scheduler` (1.6)\n    * Session Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `session`\n        2. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `messages`\n    * Streams Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `locator`\n        2. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `streams`\n    * Task Service Provider\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `task`\n        2. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `action`\n    * Simple Service Providers\n        1. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `browser`\n        2. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `cache`\n        3. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `events`\n        4. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `exif`\n        5. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `plugins`\n        6. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `taxonomy`\n        7. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `themes`\n        8. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `twig`\n        9. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `uri`\n
4. \u0412\u044b\u0437\u043e\u0432 `Grav::process()`\n

Grav.php

1. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Initialize\n    * Configuration\n        1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['config']`\n        2. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['plugins']`\n    * Logger\n        1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['log']`\n    * Errors\n        1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['errors']`\n        2. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a PHP\n    * Debugger\n        1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['debugger']`\n    * \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430\n    * \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u044b\u0432\u043e\u0434\u0430\n    * Localization\n        1. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c \u0438 \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441\n    * Plugins\n        1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['plugins']`\n    * Pages\n        1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['pages']`\n    * Uri\n        1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['uri']`\n        2. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `$grav['base_url_absolute']`\n        3. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `$grav['base_url_relative']`\n        4. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c `$grav['base_url']`\n    * Handle redirect\n        1. \u0414\u0435\u043b\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 `system.pages.redirect_trailing_slash` \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `true` \u0438 \u0432 URL \u0435\u0441\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 \u0441\u043b\u044d\u0448\n    * Accounts\n        1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['accounts']`\n    * Session\n        1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['session']`, \u0435\u0441\u043b\u0438 `system.session.initialize` \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `true`\n2. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Plugins\n    * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPluginsInitialized**\n3. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Request\n    * \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['request']`\n    * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onRequestHandlerInit** \u0441 [request, handler]\n    * \u0415\u0441\u043b\u0438 \u043e\u0442\u0432\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043e\u0442\u0432\u0435\u0442\n4. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Tasks\n    * \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438\u043c\u0435\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 _controller.class_, \u043b\u0438\u0431\u043e _task_, \u043b\u0438\u0431\u043e _action_:\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\n        * \u0415\u0441\u043b\u0438 `NotFoundException`: \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c (\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435)\n        * \u0415\u0441\u043b\u0438 \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430 418: \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c (\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435)\n        * \u0418\u043d\u0430\u0447\u0435: \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043e\u0442\u0432\u0435\u0442\n    * \u0415\u0441\u043b\u0438 _task_:\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onTask**\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onTask.[TASK]**\n    * \u0415\u0441\u043b\u0438 _action_\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onAction**\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onAction.[ACTION]**\n5. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Backups\n    * \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['backups']`\n    * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onBackupsInitialized**\n6. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Scheduler\n    * \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['scheduler']`\n    * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onSchedulerInitialized**\n7. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Assets\n    * \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['assets']`\n    * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onAssetsInitialized**\n8. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Twig\n    * \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['twig']`\n

Twig.php

* \u0417\u0430\u0434\u0430\u0435\u043c \u043f\u0443\u0442\u0438 \u043a \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c Twig \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\n* \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\n* \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onTwigTemplatePaths**\n* \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onTwigLoader**\n* \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Twig \u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430\n* \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onTwigInitialized**\n* \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Twig\n* \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onTwigExtensions**\n* \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 Twig (config, uri, taxonomy, assets, browser \u0438 \u0442. \u0434.)\n
9. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Pages\n    * \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['pages']`\n

Pages.php

* \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c `buildPages()`\n* (\u043b\u043e\u0433\u0438\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f Flex-\u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043d\u043e \u0438\u0434\u0435\u044f \u0442\u0430 \u0436\u0435)\n* \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u044d\u0448\u0430\n* \u0415\u0441\u043b\u0438 **\u043a\u044d\u0448 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435**, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u0437 \u043d\u0435\u0433\u043e\n* \u0415\u0441\u043b\u0438 **\u043a\u044d\u0448 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442**, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c `recurse()`\n* \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onBuildPagesInitialized** \u0432 `recurse()`\n* \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b `.md` \u043d\u0430\u0439\u0434\u0435\u043d:\n

Page.php

* \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c `init()` \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u0444\u0430\u0439\u043b\u0435\n* \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c `filePath`, `modified`, `id`\n* \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c `header()` \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\n* \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c `slug()` \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043b\u0430\u0433\u0430 URL\n* \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c `visible()` \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\n* \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 `modularTwig()` \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0441 `_` \u0438\u043b\u0438 \u043d\u0435\u0442\n
* \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageProcessed**\n* \u0415\u0441\u043b\u0438 \u0432 `\u043f\u0430\u043f\u043a\u0435` \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u043f\u043e\u0442\u043e\u043c\u043a\u0438 `recurse()`\n* \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onFolderProcessed**\n* \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c `buildRoutes()`\n* \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `taxonomy` \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\n* \u0421\u0442\u0440\u043e\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 (`route`) \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430\n
    * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPagesInitialized** \u0441 [pages]\n    * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageInitialized** \u0441 [page]\n    * \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f:\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageNotFound** \u0441 [page]\n    * \u0415\u0441\u043b\u0438 _task_:\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageTask** \u0441 [task, page]\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageTask.[TASK]** \u0441 [task, page]\n    * \u0415\u0441\u043b\u0438 _action_:\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageAction** \u0441 [action, page]\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageAction.[ACTION]** \u0441 [action, page]\n10. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Debugger Assets\n    * \u0422\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438: \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a CSS/JS \u0432 \u0430\u043a\u0442\u0438\u0432\u044b\n11. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a Render\n    * \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c `$grav['output']`\n    * \u0415\u0441\u043b\u0438 `output` \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430 `ResponseInterface`:\n        * \u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043e\u0442\u0432\u0435\u0442\n    * \u0418\u043d\u0430\u0447\u0435:\n        * \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 Twig `processSite()`\n

Twig.php

* \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onTwigSiteVariables**\n* \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u044b\u0432\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\n* \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onTwigPageVariables**, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\n* \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0438\u043b\u0438 \u043d\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageFallBackUrl** \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u043d\u0430\u0441 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430-\u0430\u043a\u0442\u0438\u0432\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageNotFound**, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442\n* \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 Twig \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 Twig\n* \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0444\u0430\u0439\u043b\u0435/\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435/\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438\n* \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 `render()`\n* \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 HTML\n
        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onOutputGenerated**\n        * \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0431\u0443\u0444\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430\n        * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onOutputRendered**\n        * \u0421\u0442\u0440\u043e\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442 _Response_\n        * \u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0432\u044b\u0434\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442\n12. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageHeaders** \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\n13. \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0442\u0435\u043b\u043e HTTP\n14. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 (\u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d)\n15. \u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c\n    * \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0441\u0441\u0438\u044e\n    * \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c\n    * \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onShutdown**\n

\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 content(), \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b:

Page.php

\u0415\u0441\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u041d\u0415 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043e
1. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageContentRaw**\n2. \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 Markdown \u0438 Twig. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onMarkdownInitialized**\n3. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageContentProcessed**\n
\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 **onPageContent**\n
"},{"location":"plugins/plugin-basics/","title":"\u041e\u0441\u043d\u043e\u0432\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":""},{"location":"plugins/plugin-basics/#osnovy-plaginov","title":"\u041e\u0441\u043d\u043e\u0432\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

Grav \u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438 \u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u0438\u043c\u0435\u044f \u0434\u0435\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438. \u0418\u0434\u0435\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Grav \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u043f\u0435\u0440-\u0431\u0435\u0440\u0435\u0436\u043b\u0438\u0432\u043e\u0439 CMS, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u044b: \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e Markdown \u0432 HTML, \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e Twig \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.

\u041e\u0434\u043d\u0430\u043a\u043e \u043c\u044b \u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e Grav \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u0442\u0438 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0449\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0445\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u043e \u0432\u0441\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.

"},{"location":"plugins/plugin-basics/#moshch","title":"\u041c\u043e\u0449\u044c!","text":"

\u0412\u0441\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 Grav \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0449\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0445\u0443\u043a\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 Grav \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c\u0443, \u0447\u0442\u043e Grav \u0437\u043d\u0430\u0435\u0442, \u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043c \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0421 \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e.

\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0431\u043a\u0438\u043c\u0438 \u0438 \u043c\u043e\u0449\u043d\u044b\u043c\u0438, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c! \u0423 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 370 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u0432\u0441\u0451 \u043e\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f sitemap, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0445\u043b\u0435\u0431\u043d\u044b\u0445 \u043a\u0440\u043e\u0448\u0435\u043a, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0432\u0430 \u0431\u043b\u043e\u0433\u0430, \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430, \u0434\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u0440\u0437\u0438\u043d\u044b \u043f\u043e\u043a\u0443\u043f\u043e\u043a \u043d\u0430 JavaScript!

\u041b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0441 \u043d\u0443\u043b\u044f!

"},{"location":"plugins/plugin-basics/#osnovy","title":"\u041e\u0441\u043d\u043e\u0432\u044b","text":"

\u0412\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0432\u0430\u0448\u0435\u0439 \u043f\u0430\u043f\u043a\u0435 user/plugins. \u0421 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 Grav \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430: error \u0438 problems.

\u041f\u043b\u0430\u0433\u0438\u043d error \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 HTTP-\u043e\u0448\u0438\u0431\u043e\u043a, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a 404 \u2014 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430.

\u041f\u043b\u0430\u0433\u0438\u043d problems \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u043a Grav, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0430\u043f\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 Grav. \u0422\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d error \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.

\u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0432 \u043f\u0430\u043f\u043a\u0435 user/plugins \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f, \u0438 \u044d\u0442\u043e \u0438\u043c\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0442\u043e\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0431\u0443\u043a\u0432\u044b \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

"},{"location":"plugins/plugin-basics/#dostup-k-znacheniiam-konfiguratsii-plagina-cherez-twig","title":"\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 Twig","text":"

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 Twig (\u0442. \u0435. \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0435\u043c\u044b), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c:

{{ config.plugins.pluginname.pluginproperty }}\n

\u0415\u0441\u043b\u0438 \u0438\u043c\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0438\u0440\u0435, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0435\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u0442\u0430\u043a:

{{ config.plugins['plugin-name'].pluginproperty }}\n
"},{"location":"plugins/plugin-basics/#ispolzovanie-flex-v-plaginakh","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Flex \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445","text":"

\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Flex \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0441 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 Flex, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0432\u0430\u0441.

\u0421\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Flex \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445

"},{"location":"plugins/plugin-flex/","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Flex \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445","text":""},{"location":"plugins/plugin-flex/#ispolzovanie-flex-v-plaginakh","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Flex \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445","text":""},{"location":"plugins/plugin-flex/#vvedenie","title":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Flex, \u0431\u0443\u0434\u044c \u0442\u043e \u0432 Twig \u0438\u043b\u0438 \u0432 PHP-\u043a\u043e\u0434\u0435, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0432\u0441\u044e \u043c\u043e\u0449\u044c \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c Flex, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u0448\u0435\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u043f\u043e Flex.

Flex \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b CRUDS, \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0442\u0430\u043a \u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u0435 API, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u0434\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.

\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u0442\u0430\u043a \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0438 \u0438\u043b\u0438 \u0444\u043e\u0440\u043c\u044b (\u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451).

"},{"location":"plugins/plugin-flex/#trebovaniia","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f","text":"

\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f Grav 1.7 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u0414\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u044d\u0442\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 grav+admin. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0435\u0451, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435.

"},{"location":"plugins/plugin-flex/#sozdanie-vashikh-plaginov","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0441 Flex \u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u0441 \u043d\u0443\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043c\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b DevTools \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043a\u0435\u043b\u0435\u0442\u0430 \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439:

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 devtools:

bin/gpm install devtools\n

\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e devtools, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0438\u043c\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u2014 myflexplugin:

grav-admin bin/plugin devtools new-plugin\n

\u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u044b, \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f Flex:

Enter Plugin Name:\n\n> myflexplugin\n\nEnter Plugin Description:\n\n> A little Flex plugin test\n\nEnter Developer Name:\n\n> grav@example.com\n\nEnter GitHub ID (can be blank):\n\n> gravcms\n\nEnter Developer Email:\n\n> grav@example.com\n\nPlease choose an option:\n[blank] Basic Plugin\n[flex ] Basic Plugin prepared for custom Flex Objects\n\n> flex\n\nEnter Flex Object Name:\n\n> book\n\nPlease choose a storage type:\n[simple] Basic Storage (1 file for all objects) - no media support\n[file ] File Storage (1 file per object)\n[folder] Folder Storage (1 folder per object)\n\n> folder\n\nSUCCESS plugin myflexplugin -> Created Successfully\n\nPath: /home/pierre/project/grav/grav-admin/user/plugins/myflexplugin\n\nPlease run `cd /home/pierre/project/grav/grav-admin/user/plugins/myflexplugin` and `composer update` to initialize the autoloader\n

\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f, \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430:

cd /home/pierre/project/grav/grav-admin/user/plugins/myflexplugin\n
composer update\n

\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:

Loading composer repositories with package information\nUpdating dependencies\nNothing to modify in lock file\nWriting lock file\nInstalling dependencies from lock file (including require-dev)\nNothing to install, update or remove\nGenerating autoload files\nNo installed packages - skipping audit.\n

\u0437\u0430\u0442\u0435\u043c \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 grav-admin:

cd -\n

\u0421\u043a\u0440\u0438\u043f\u0442 devtools \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Flex, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0438\u043c\u0435\u043d\u0438 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u0438 \u0435\u0433\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0443\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u044d\u0442\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438\u0445, \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u043d\u0438 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u043a\u043e\u0434\u0430.

\u0412 \u043b\u0435\u0432\u043e\u043c \u0431\u043e\u043a\u043e\u0432\u043e\u043c \u043c\u0435\u043d\u044e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u043d\u043a\u0442:

\u0424\u043e\u0440\u043c\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u0438 \u0444\u0430\u0439\u043b\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0438 \u0435\u0433\u043e Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c book.

"},{"location":"plugins/plugin-flex/#chto-sdelano","title":"\u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e","text":"

\u041f\u0430\u043f\u043a\u0430 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

../grav-admin/user/plugins/myflexplugin\n\u251c\u2500\u2500 CHANGELOG.md\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 blueprints\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 flex-objects\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 book.yaml\n\u251c\u2500\u2500 blueprints.yaml\n\u251c\u2500\u2500 classes\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 Flex\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 Types\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 Book\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 BookCollection.php\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 BookObject.php\n\u251c\u2500\u2500 composer.json\n\u251c\u2500\u2500 composer.lock\n\u251c\u2500\u2500 languages.yaml\n\u251c\u2500\u2500 myflexplugin.php\n\u251c\u2500\u2500 myflexplugin.yaml\n\u2514\u2500\u2500 vendor\n\u251c\u2500\u2500 autoload.php\n\u2514\u2500\u2500 composer\n\u251c\u2500\u2500 ClassLoader.php\n\u251c\u2500\u2500 InstalledVersions.php\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 autoload_classmap.php\n\u251c\u2500\u2500 autoload_namespaces.php\n\u251c\u2500\u2500 autoload_psr4.php\n\u251c\u2500\u2500 autoload_real.php\n\u251c\u2500\u2500 autoload_static.php\n\u251c\u2500\u2500 installed.json\n\u251c\u2500\u2500 installed.php\n\u2514\u2500\u2500 platform_check.php\n
"},{"location":"plugins/plugin-flex/#opredelenie-obekta-flex","title":"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Flex","text":"

\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0430. \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0441\u0445\u0435\u043c\u0430 \u044d\u0442\u043e\u0433\u043e Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0446\u0438\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.

\u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u043a\u043d\u0438\u0433 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 user/plugins/myflexplugin/blueprints/flex-objects/book.yaml.

\u0412\u0410\u0416\u041d\u041e \u0427\u0435\u0440\u0442\u0451\u0436 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 (\u0438\u043b\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 /blueprints) \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 blueprints/flex-objects/, \u0438\u043d\u0430\u0447\u0435 \u043e\u043d\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u044b.

\u0421\u0445\u0435\u043c\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 Form \u044d\u0442\u043e\u0433\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430. \u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0431\u0443\u0434\u0443\u0442 \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044d\u0442\u043e\u0433\u043e Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u0430.

\u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u0430 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430\u0448\u0435\u0439 \u043a\u043d\u0438\u0433\u0438. \u0412 \u043e\u0431\u0448\u0438\u0440\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u043c Flex \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u043f\u043e\u0434 \u0441\u0435\u0431\u044f.

\u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 \u043d\u0438\u0436\u0435 \u0441\u0445\u0435\u043c\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u044d\u0442\u0438 \u0434\u0432\u0430 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:

form:\n  validation: loose\n  fields:\n    published:\n      type: toggle\n      label: Published\n      highlight: 1\n      default: 1\n      options:\n        1: PLUGIN_ADMIN.YES\n        0: PLUGIN_ADMIN.NO\n      validate:\n        type: bool\n        required: true\n    name:\n      type: text\n      label: Name\n      validate:\n        required: true\n    description:\n      type: text\n      label: Description\n      validate:\n        required: true\n
"},{"location":"plugins/plugin-flex/#khuki-plagina","title":"\u0425\u0443\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":"

myflexplugin.php \u2014 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0445\u0443\u043a\u043e\u0432 \u0438 \u0442. \u0434.

\u042d\u0442\u0438 \u0434\u0435\u0442\u0430\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f Flex:

<?php\n\npublic $features = [\n'blueprints' => 0,\n];\n\n    /**\n     * @return array\n     *\n     * The getSubscribedEvents() gives the core a list of events\n     *     that the plugin wants to listen to. The key of each\n     *     array section is the event that the plugin listens to\n     *     and the value (in the form of an array) contains the\n     *     callable (or function) as well as the priority. The\n     *     higher the number the higher the priority.\n     */\n    public static function getSubscribedEvents(): array\n    {\n        return [\n            'onPluginsInitialized' => [\n                // Uncomment following line when plugin requires Grav < 1.7\n                // ['autoload', 100000],\n                ['onPluginsInitialized', 0]\n            ],\n            FlexRegisterEvent::class       => [['onRegisterFlex', 0]],\n        ];\n    }\n

\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. \u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u0437\u0434\u0435\u0441\u044c.

\u041f\u0430\u043f\u043a\u0430 classes \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043b\u0430\u0441\u0441\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f Flex-\u043e\u0431\u044a\u0435\u043a\u0442\u0430 book \u0438 Flex-\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 book. \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0421\u043c. \u0440\u0430\u0437\u0434\u0435\u043b \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 Flex.

"},{"location":"plugins/plugin-flex/#izmenenie-skhemy-obektov-flex","title":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Flex","text":"

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0430\u0448 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u043b\u0435, \u0441\u043a\u0430\u0436\u0435\u043c, \u043f\u043e\u043b\u0435 datetime, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0434\u0430\u0442\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u043a\u043d\u0438\u0433\u0438, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043f\u043e\u043b\u044f pub_date \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0438:

form:\n  validation: loose\n  fields:\n    published:\n      type: toggle\n      label: Published\n      highlight: 1\n      default: 1\n      options:\n        1: PLUGIN_ADMIN.YES\n        0: PLUGIN_ADMIN.NO\n      validate:\n        type: bool\n        required: true\n    name:\n      type: text\n      label: Name\n      validate:\n        required: true\n    pub_date:\n      type: datetime\n      label: Description\n      validate:\n        required: true\n

\u0412 \u0444\u043e\u0440\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u0442\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438:

\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043b\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0437\u0434\u0435\u0441\u044c

"},{"location":"plugins/plugin-flex/#dobavlenie-polzovatelskogo-metoda-k-obektu-flex","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 Flex","text":"

\u0422\u0435\u043a\u0443\u0449\u0438\u0439 Flex-\u043e\u0431\u044a\u0435\u043a\u0442 book, user/plugins/myflexplugin/classes/Flex/Types/Book/BookObject.php, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e GenericObject (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0435\u0439\u0442\u043e\u0432):

<?php\n\ndeclare(strict_types=1);\n\n/**\n * @package    Grav\\Common\\Flex\n *\n * @copyright  Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.\n * @license    MIT License; see LICENSE file for details.\n */\n\nnamespace Grav\\Plugin\\Myflexplugin\\Flex\\Types\\Book;\n\nuse Grav\\Common\\Flex\\Types\\Generic\\GenericObject;\n\n/**\n * Class BookObject\n * @package Grav\\Common\\Flex\\Generic\n *\n * @extends FlexObject<string,GenericObject>\n*/\nclass BookObject extends GenericObject\n{\n\n}\n

\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043a\u043d\u0438\u0433\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f:

<?php\n\ndeclare(strict_types=1);\n\n/**\n * @package    Grav\\Common\\Flex\n *\n * @copyright  Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved.\n * @license    MIT License; see LICENSE file for details.\n */\n\nnamespace Grav\\Plugin\\Myflexplugin\\Flex\\Types\\Book;\n\nuse Grav\\Common\\Flex\\Types\\Generic\\GenericObject;\n\n/**\n * Class BookObject\n * @package Grav\\Common\\Flex\\Generic\n *\n * @extends FlexObject<string,GenericObject>\n*/\nclass BookObject extends GenericObject\n{\n    public function getSummary() {\n        $delimiter = \\Grav\\Common\\Grav::instance()['config']['site']['summary']['delimiter'] ?? '===';\n        $summary = explode($delimiter, $this->content);\n        return $summary[0] ?? '';\n    }\n}\n

\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u0433\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Flex-\u043e\u0431\u044a\u0435\u043a\u0442 book, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435:

{% set books = grav.get('flex').collection('book') %}\n{% for book in books  %}\n<h1>{{ book.header.title}}</h1>\n<p>{{ book.getSummary()}}</p>\n{% endfor %}\n

\u041c\u0435\u0442\u043e\u0434 ::getSummary \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0432 \u043b\u044e\u0431\u043e\u043c PHP-\u043a\u043e\u0434\u0435.

\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 user/plugins/myflexplugin/classes/Flex/Types/Book/BookCollection.php. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439. \u0415\u0441\u043b\u0438 \u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439, \u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0441\u0431\u043e\u0440\u0430 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c.

"},{"location":"plugins/plugin-install/","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":""},{"location":"plugins/plugin-install/#ustanovka-plaginov","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":""},{"location":"plugins/plugin-install/#ustanovka","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430","text":"

\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u043c\u043e\u0436\u043d\u043e \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432:

  • \u0427\u0435\u0440\u0435\u0437 GPM (\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 Grav), \u0432\u0432\u0435\u0434\u044f \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435.
  • \u0412\u0440\u0443\u0447\u043d\u0443\u044e, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0432 \u0430\u0440\u0445\u0438\u0432 \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e.
  • \u0427\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438.

\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u044d\u0442\u0430\u043f\u043e\u0432 \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0442\u044c \u0438\u043c\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 NAME.

"},{"location":"plugins/plugin-install/#ustanovka-cherez-gpm-rekomenduemyi-sposob","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 GPM (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431)","text":"

\u0427\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0447\u0435\u0440\u0435\u0437 GPM, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435:

bin/gpm install NAME\n

\u042d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e /user/plugins. \u0424\u0430\u0439\u043b\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0432 user/plugins/NAME.

"},{"location":"plugins/plugin-install/#ruchnaia-ustanovka","title":"\u0420\u0443\u0447\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430","text":"

\u0427\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 zip-\u0432\u0435\u0440\u0441\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438 \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0451 \u0432 user/plugins/. \u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432 NAME.

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 user/plugins/NAME.

\u042d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f Grav, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0441\u043c. \u0444\u0430\u0439\u043b user/plugins/NAME/blueprints.yaml.

"},{"location":"plugins/plugin-install/#plagin-adminki","title":"\u041f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d (\u0435\u0441\u043b\u0438 \u043e\u043d \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 Grav) \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u041f\u043b\u0430\u0433\u0438\u043d\u044b, \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c.

"},{"location":"plugins/plugin-tutorial/","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":""},{"location":"plugins/plugin-tutorial/#sozdanie-plaginov","title":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Grav.

\u0412 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 Grav \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u0412\u044b, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u0438\u0434\u0435\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442\u0430\u0445 \u0431\u043b\u043e\u0433\u043e\u0432 \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0431\u043b\u043e\u0433\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443.

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u044d\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c Random, \u043c\u044b \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u043e\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c Randomizer.

\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d. \u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u043c\u0438 Grav, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432. \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434...

"},{"location":"plugins/plugin-tutorial/#obzor-plagina-randomizer","title":"\u041e\u0431\u0437\u043e\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Randomizer","text":"

\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c:

  1. \u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d, \u0435\u0441\u043b\u0438 URI \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430\u043c\u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043d\u043e\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443. (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, /random)

  2. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440, \u0447\u0442\u043e\u0431\u044b \u0432 \u043f\u0443\u043b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u043e\u043f\u0430\u0434\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438. (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, category: blog)

  3. \u041d\u0430\u0439\u0434\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043b\u0430 \u0438 \u0441\u043a\u0430\u0436\u0435\u043c Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0425\u041e\u0420\u041e\u0428\u041e! \u0417\u0432\u0443\u0447\u0438\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u043f\u0440\u0430\u0432\u0434\u0430? \u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c!

"},{"location":"plugins/plugin-tutorial/#shag-1-ustanovka-plagina-devtools","title":"\u0428\u0430\u0433 1 - \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 DevTools","text":"

\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0412\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043d\u0430\u0448\u0435\u043c\u0443 \u043d\u043e\u0432\u043e\u043c\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0443 DevTools

\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u2014 \u044d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d DevTools. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438.

"},{"location":"plugins/plugin-tutorial/#ustanovka-cherez-cli-gpm","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 CLI GPM","text":"
  • \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043a \u043a\u043e\u0440\u043d\u044e \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav
bin/gpm install devtools\n
"},{"location":"plugins/plugin-tutorial/#ustanovka-cherez-plagin-adminki","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"
  • \u041f\u043e\u0441\u043b\u0435 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043d\u0430 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438.
  • \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443.
  • \u041d\u0430\u0439\u0434\u0438\u0442\u0435 DevTools \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.
"},{"location":"plugins/plugin-tutorial/#shag-2-sozdanie-plagina-randomizer","title":"\u0428\u0430\u0433 2 - \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Randomizer","text":"

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0448\u0430\u0433\u0430 \u0432\u0430\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 DevTools \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434 CLI, \u0447\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430!

\u0412 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:

bin/plugin devtools new-plugin\n

\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0434\u0430\u0441\u0442 \u0432\u0430\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430:

bin/plugin devtools new-plugin\nEnter Plugin Name: Randomizer\nEnter Plugin Description: Sends the user to a random page\nEnter Developer Name: Acme Corp\nEnter Developer Email: contact@acme.co\n\nSUCCESS plugin Randomizer -> Created Successfully\n\nPath: /www/user/plugins/randomizer\n\nMake sure to run `composer update` to initialize the autoloader\n

\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c composer update \u0432\u043e \u0432\u043d\u043e\u0432\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u041a\u043e\u043c\u0430\u043d\u0434\u0430 DevTools \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0432\u0430\u043c, \u0433\u0434\u0435 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u044d\u0442\u043e\u0442 \u043d\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d. \u0421\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d, \u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043c\u0435\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438.

"},{"location":"plugins/plugin-tutorial/#shag-3-osnovy-plagina","title":"\u0428\u0430\u0433 3 - \u041e\u0441\u043d\u043e\u0432\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":"

\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043f\u043b\u0430\u0433\u0438\u043d. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 user/plugins/randomizer, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435:

.\n\u251c\u2500\u2500 CHANGELOG.md\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 blueprints.yaml\n\u251c\u2500\u2500 randomizer.php\n\u2514\u2500\u2500 randomizer.yaml\n

\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0449\u0438:

"},{"location":"plugins/plugin-tutorial/#neobkhodimye-elementy-dlia-raboty","title":"\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b","text":"

\u042d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b, \u0438 \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0438\u0445 \u0432 \u0441\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d.

  • blueprints.yaml - \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 Grav \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u0430\u0448\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0444\u043e\u0440\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0435. \u042d\u0442\u0430 \u0444\u043e\u0440\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0433\u043b\u0430\u0432\u0435 \u00ab\u0424\u043e\u0440\u043c\u044b\u00bb.
  • randomizer.php - \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0443. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 Grav.
  • randomizer.yaml - \u044d\u0442\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0444\u0430\u0439\u043b .php.
"},{"location":"plugins/plugin-tutorial/#neobkhodimye-elementy-dlia-vypuska","title":"\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0432\u044b\u043f\u0443\u0441\u043a\u0430","text":"

\u042d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0447\u0435\u0440\u0435\u0437 GPM.

  • CHANGELOG.md - \u0424\u0430\u0439\u043b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 Grav \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0445.
  • LICENSE - \u0444\u0430\u0439\u043b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c MIT, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u0447\u0435\u043c-\u0442\u043e \u0435\u0449\u0435.
  • README.md - \"Readme\", \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.
"},{"location":"plugins/plugin-tutorial/#shag-4-nastroika-plagina","title":"\u0428\u0430\u0433 4 - \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":"

\u041a\u0430\u043a \u043c\u044b \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u041e\u0431\u0437\u043e\u0440\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u0439\u043b randomizer.yaml \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

enabled: true\nactive: true\nroute: /random\nfilters:\n    category: blog\n

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u043d\u043e \u043f\u043e\u043a\u0430 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0435\u0439 category: blog \u0438\u043c\u0435\u043b \u043f\u0440\u0430\u0432\u043e \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440.

\u0412\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u043e\u043f\u0446\u0438\u044e \u00ab\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u00bb. \u0415\u0441\u043b\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false, \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d Grav. \u0412\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0442 \u043e\u043f\u0446\u0438\u044e active. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e false \u0432\u043e \u0432\u0441\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 enabled/active \u0432 \u043e\u0431\u043b\u043e\u0436\u043a\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e mergeConfig, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0438\u0436\u0435.

\u041f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 Grav \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0434\u043b\u044f category \u0438 tag \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u042d\u0442\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 user/config/site.yaml.

\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0432 Grav, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u044d\u0442\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c /user/config/plugins/randomizer.yaml \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u042d\u0442\u043e\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c randomizer.yaml \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

"},{"location":"plugins/plugin-tutorial/#shag-5-bazovaia-struktura-plagina","title":"\u0428\u0430\u0433 5 - \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":"

\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

<?php\n\nnamespace Grav\\Plugin;\n\nuse Composer\\Autoload\\ClassLoader;\nuse Grav\\Common\\Plugin;\nuse RocketTheme\\Toolbox\\Event\\Event;\n\n/**\n * Class RandomizerPlugin\n * @package Grav\\Plugin\n */\nclass RandomizerPlugin extends Plugin\n{\n    /**\n     * Composer autoload.\n     *\n     * @return ClassLoader\n     */\n    public function autoload(): ClassLoader\n    {\n        return require __DIR__ . '/vendor/autoload.php';\n    }\n}\n

\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 use, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435, \u0438 \u044d\u0442\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0435\u0441\u0442\u043e \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0443.

\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b use, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0438 \u0442\u0430\u043a:

<?php\n\nuse Composer\\Autoload\\ClassLoader;\nuse Grav\\Common\\Plugin;\nuse Grav\\Common\\Page\\Collection;\nuse Grav\\Common\\Uri;\nuse Grav\\Common\\Taxonomy;\n

\u0414\u0432\u0443\u043c\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f:

  1. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c namespace Grav\\Plugin \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 PHP-\u0444\u0430\u0439\u043b\u0430.
  2. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u044b \u0432 CamelCase \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0438\u043c\u0435\u043d\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 Plugin, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u043a\u043e\u043d\u0435\u0446, \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c Plugin, \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 RandomizerPlugin.
"},{"location":"plugins/plugin-tutorial/#shag-6-sobytiia-s-podpiskoi","title":"\u0428\u0430\u0433 6 - \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u043e\u0439","text":"

Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0438 \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f Grav, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d.

<?php\n\npublic static function getSubscribedEvents(): array\n{\n    return [\n        'onPluginsInitialized' => [\n            ['autoload', 100000], // TODO: Remove when plugin requires Grav >=1.7\n            ['onPluginsInitialized', 0]\n        ]\n    ];\n}\n

\u0412 \u044d\u0442\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c Grav, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 onPluginsInitialized. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432), \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u043d\u0430\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f.

\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0439 autoload \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Grav 1.6. Grav 1.7 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434.

"},{"location":"plugins/plugin-tutorial/#shag-7-opredelenie-neobkhodimosti-zapuska-plagina","title":"\u0428\u0430\u0433 7 - \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430","text":"

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043d\u0430\u0448 \u043a\u043b\u0430\u0441\u0441 RandomizerPlugin \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f onPluginsInitialized, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 randomizer.yaml. \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 'Example' \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e:

<?php\n\npublic function onPluginsInitialized(): void\n{\n    // Don't proceed if we are in the admin plugin\n    if ($this->isAdmin()) {\n        return;\n    }\n\n    /** @var Uri $uri */\n    $uri = $this->grav['uri'];\n    $config = $this->config();\n\n    $route = $config['route'] ?? null;\n    if ($route && $route == $uri->path()) {\n        $this->enable([\n            'onPageInitialized' => ['onPageInitialized', 0]\n        ]);\n    }\n}\n

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 Uri \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043a\u0443\u0449\u0435\u043c URI, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435.

\u041e\u0431\u044a\u0435\u043a\u0442 config \u0443\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e Plugin, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e route.

\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043f\u0443\u0442\u0435\u043c URI. \u0415\u0441\u043b\u0438 \u043e\u043d\u0438 \u0440\u0430\u0432\u043d\u044b, \u043c\u044b \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443, \u0447\u0442\u043e \u043d\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435: onPageInitialized.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434, \u043c\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u0435\u0441\u043b\u0438 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u044d\u0442\u043e\u0439, \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435.

"},{"location":"plugins/plugin-tutorial/#shag-8-otobrazhenie-sluchainoi-stranitsy","title":"\u0428\u0430\u0433 8 \u2014 \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434:

<?php\n\n/**\n * Send user to a random page\n */\npublic function onPageInitialized(): void\n{\n    /** @var Taxonomy $uri */\n    $taxonomy_map = $this->grav['taxonomy'];\n    $config = $this->config();\n\n    $filters = (array)($config['filters'] ?? []);\n    $operator = $config['filter_combinator'] ?? 'and';\n\n    if (count($filters) > 0) {\n        $collection = new Collection();\n        $collection->append($taxonomy_map->findTaxonomy($filters, $operator)->toArray());\n        if (count($collection) > 0) {\n            unset($this->grav['page']);\n            $this->grav['page'] = $collection->random()->current();\n        }\n    }\n}\n

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442:

  1. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 Taxonomy \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 Grav DI \u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 $taxonomy_map.

  2. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438\u0437 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u0412 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 1 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c: ['category'=>'blog'].

  3. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 $collection \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

  4. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0443, \u0432 \u043d\u0430\u0448\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e $collection.

  5. \u0421\u043d\u0438\u043c\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 page, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u043d\u0430\u0435\u0442 Grav.

  6. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0443\u0449\u0443\u044e page \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

"},{"location":"plugins/plugin-tutorial/#shag-9-ochistka","title":"\u0428\u0430\u0433 9 - \u041e\u0447\u0438\u0441\u0442\u043a\u0430","text":"

\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 DevTools, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c `onPageContentRaw()'. \u042d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0448\u0435\u043c \u043d\u043e\u0432\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.

"},{"location":"plugins/plugin-tutorial/#shag-10-itog","title":"\u0428\u0430\u0433 10 - \u0418\u0442\u043e\u0433","text":"

\u0418 \u044d\u0442\u043e \u0432\u0441\u0435, \u0447\u0442\u043e \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c! \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d. \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:

<?php\n\nnamespace Grav\\Plugin;\n\nuse Composer\\Autoload\\ClassLoader;\nuse Grav\\Common\\Plugin;\nuse Grav\\Common\\Page\\Collection;\nuse Grav\\Common\\Uri;\nuse Grav\\Common\\Taxonomy;\n\n/**\n * Class RandomizerPlugin\n * @package Grav\\Plugin\n */\nclass RandomizerPlugin extends Plugin\n{\n    /**\n     * @return array\n     *\n     * The getSubscribedEvents() gives the core a list of events\n     *     that the plugin wants to listen to. The key of each\n     *     array section is the event that the plugin listens to\n     *     and the value (in the form of an array) contains the\n     *     callable (or function) as well as the priority. The\n     *     higher the number the higher the priority.\n     */\n    public static function getSubscribedEvents(): array\n    {\n    return [\n        'onPluginsInitialized' => [\n            ['autoload', 100000], // TODO: Remove when plugin requires Grav >=1.7\n            ['onPluginsInitialized', 0]\n        ]\n    ];\n    }\n\n    /**\n     * Composer autoload.\n     *\n     * @return ClassLoader\n     */\n    public function autoload(): ClassLoader\n    {\n        return require __DIR__ . '/vendor/autoload.php';\n    }\n\n    public function onPluginsInitialized(): void\n    {\n        // Don't proceed if we are in the admin plugin\n        if ($this->isAdmin()) {\n            return;\n        }\n\n        /** @var Uri $uri */\n        $uri = $this->grav['uri'];\n        $config = $this->config();\n\n        $route = $config['route'] ?? null;\n        if ($route && $route == $uri->path()) {\n            $this->enable([\n                'onPageInitialized' => ['onPageInitialized', 0]\n            ]);\n        }\n    }\n\n    /**\n     * Send user to a random page\n     */\n    public function onPageInitialized(): void\n    {\n        /** @var Taxonomy $uri */\n        $taxonomy_map = $this->grav['taxonomy'];\n        $config = $this->config();\n\n        $filters = (array)($config['filters'] ?? []);\n        $operator = $config['filter_combinator'] ?? 'and';\n\n        if (count($filters) > 0) {\n            $collection = new Collection();\n            $collection->append($taxonomy_map->findTaxonomy($filters, $operator)->toArray());\n            if (count($collection) > 0) {\n                unset($this->grav['page']);\n                $this->grav['page'] = $collection->random()->current();\n            }\n        }\n    }\n}\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0435 \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d Randomizer, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0430 https://yoursite.com/random, \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d Random \u043f\u0440\u044f\u043c\u043e \u0441 \u0441\u0430\u0439\u0442\u0430 getgrav.org.

"},{"location":"plugins/plugin-tutorial/#sliianie-plagina-i-konfiguratsii-stranitsy","title":"\u0421\u043b\u0438\u044f\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b","text":"

\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 (\u043b\u0438\u0431\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f) \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e site-wide, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u043c\u0435\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u042d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Grav \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0430\u043c\u043e\u043c\u0443. \u041f\u043b\u0430\u0433\u0438\u043d SmartyPants \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438:

<?php\n\npublic function onPageContentProcessed(Event $event)\n{\n    $page = $event['page'];\n    $config = $this->mergeConfig($page);\n\n    if ($config->get('process_content')) {\n        $page->setRawContent(\\Michelf\\SmartyPants::defaultTransform(\n            $page->getRawContent(),\n            $config->get('options')\n        ));\n    }\n}\n
"},{"location":"plugins/plugin-tutorial/#realizatsiia-cli-v-vashem-plagine","title":"\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f CLI \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435","text":"

\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 bin/plugin \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u200b\u200b\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c.

"},{"location":"security/configuration/","title":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":""},{"location":"security/configuration/#rekomenduemaia-konfiguratsiia","title":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":""},{"location":"security/configuration/#sait-v-prodakshene","title":"\u0421\u0430\u0439\u0442 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435","text":"

\u0412\u0430\u0436\u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043f\u0443\u0442\u0435\u043c \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0432\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 user/config/, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u0441\u0440\u0435\u0434\u0435 \u0441\u0430\u0439\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, user/env/localhost \u0438\u043b\u0438 user/env/site.local. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0440\u0435\u0434\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043c\u043d\u043e\u0433\u043e\u0441\u0430\u0439\u0442\u043e\u0432\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u043e\u043c\u0435\u043d\u0430\u0445.

"},{"location":"security/configuration/#sistemnaia-konfiguratsiia-user-config-system-yaml","title":"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f (user/config/system.yaml)","text":"
force_ssl: true       # Use HTTPS only (redirect from HTTP -> HTTPS)\n\ncache:\n  enabled: true       # Greatly speeds up the site\n  check:\n    method: hash      # Optimization, disables file modification checks for pages\n\ntwig:\n  cache: true         # Greatly speeds up the site\n  debug: false        # We do not want to display debug messages\n  auto_reload: false  # Optimization, disables file modification checks for twig files\n  autoescape: true    # Protects from many XSS attacks, but requires twig updates if used in older sites/themes/plugins\n\nerrors:\n  display: 0          # Display only a simple error\n  log: true           # Log errors for later inspection\n\ndebugger:\n  enabled: false      # Never keep debugger enabled in a live site.\n  censored: true      # In case if you happen to enable debugger, avoid displaying sensitive information\n\nsession:\n  enabled: true       # NOTE: Disable sessions if you do not use user login and/or forms.\n  secure: true        # Use this as your site should be using HTTPS only\n  httponly: true      # Protects session cookies against client side scripts and XSS\n  samesite: Strict    # Prevent all cross-site scripting attacks\n  split: true         # Separate admin session from the site session for added security\n\nstrict_mode:          # Test your site before changing these. Removes backward compatibility and improves site security.\n  yaml_compat: false\n  twig_compat: false\n  blueprint_compat: false\n
"},{"location":"security/configuration/#sait-v-razrabotke","title":"\u0421\u0430\u0439\u0442 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435","text":"

\u0414\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0441\u0430\u0439\u0442.

"},{"location":"security/configuration/#sistemnaia-konfiguratsiia-user-env-localhost-config-system-yaml","title":"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f (user/env/localhost/config/system.yaml)","text":"

\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 localhost \u043d\u0430 \u0438\u043c\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.

force_ssl: false      # If the development site doesn't use SSL\n\ncache:\n  enabled: true       # Still keep cache enabled\n  check:\n    method: file      # Allow updating pages without clearing cache\n\ntwig:\n  cache: true         # Still keep cache enabled\n  debug: true         # We want to display debug messages\n  auto_reload: true   # We may be editing twig files\n\nerrors:\n  display: 1          # Display full backtrace if there are errors\n\ndebugger:\n  enabled: true       # Debugger is handy to have\n  censored: false     # We may want to see secure content in debugger\n\nsession:\n  secure: false       # If the development site doesn't use SSL\n  httponly: false     # If the development site doesn't use SSL\n\nstrict_mode:          # These settings help you to keep your site updated to use the latest standards\n  yaml_compat: false\n  twig_compat: false\n  blueprint_compat: false\n
"},{"location":"security/developers/","title":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c","text":""},{"location":"security/developers/#razrabotchikam","title":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c","text":"

\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u043b\u0438 \u0442\u0435\u043c\u044b \u0434\u043b\u044f Grav \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u0430\u043c, \u043d\u043e \u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043b\u0438 \u0432\u0430\u0448\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043f\u0443\u0442\u0438 \u0430\u0442\u0430\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u0432 \u043d\u0430 \u0441\u0430\u0439\u0442. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Grav \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 CMS \u0441 \u043f\u043b\u043e\u0441\u043a\u0438\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043e\u043d\u0430 \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430, \u0447\u0435\u043c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043d\u043e \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043d\u0435\u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e.

"},{"location":"security/developers/#luchshie-praktiki","title":"\u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438","text":"

\u042d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0438 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0435 \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Grav, \u0438 \u0438\u0445 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430 \u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.

  • \u041f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 Twig-\u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0445 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u0432\u0441\u0435\u0433\u0434\u0430 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u0432\u0432\u043e\u0434, \u0441\u044e\u0434\u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0430\u043a\u0442\u0438\u0432\u044b.
  • PHP-\u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u0435\u0437\u0438\u043d\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0432\u043e\u0434 \u0438 \u0432\u044b\u0432\u043e\u0434.
  • \u0412 \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c: \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0430\u0431\u043e\u0440 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u0430 \u043d\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0432\u0432\u043e\u0434.
  • \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u0438 \u0438\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u043d\u0435\u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.
  • \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 Grav \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0432 \u0431\u043e\u044f\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435.
  • \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 PHP-\u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0447\u0442\u0438\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 PHP \u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u041a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 PHP \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435.
  • \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u043a\u043e\u0433\u0434\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u043e\u0442\u043b\u0430\u0434\u043a\u0443.
"},{"location":"security/developers/#ploskaia-cms","title":"\u041f\u043b\u043e\u0441\u043a\u0430\u044f CMS","text":"

Grav \u0438\u043c\u0435\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0435\u0451 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0431\u0449\u0438\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u0430\u0442\u0430\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0421\u0430\u043d\u0438\u0442\u0430\u0440\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u0437\u0430\u0449\u0438\u0442\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u044f CMS \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0430\u0442\u0430\u043a\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c SQL-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c SQL-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0434\u0430\u0436\u0435 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u0430\u0445.

"},{"location":"security/overview/","title":"\u041e\u0431\u0437\u043e\u0440","text":""},{"location":"security/overview/#obzor","title":"\u041e\u0431\u0437\u043e\u0440","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 Grav \u0438\u043b\u0438 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 contact@getgrav.org, \u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043c \u0435\u0451, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.

\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0437\u0433\u043b\u0430\u0448\u0430\u0442\u044c\u0441\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430 GitHub, Discord \u0438\u043b\u0438 \u0444\u043e\u0440\u0443\u043c\u0435 Discourse, \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0438\u0445 \u0438 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c\u0438 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0443\u0433\u0440\u043e\u0437\u043e\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Grav, \u0435\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u043c\u0438, \u0438 \u043c\u044b \u043f\u043e\u043c\u043e\u0436\u0435\u043c \u0432\u0430\u043c \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u043e\u043c\u0443 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043e\u0442\u0447\u0451\u0442.

"},{"location":"security/overview/#otpravka-otcheta","title":"\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u0442\u0447\u0451\u0442\u0430","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u044f\u0434\u0440\u0435 Grav \u0438\u043b\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u044f\u0432\u0438\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u0443\u044e \u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c:

  1. \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u0439 Grav \u0438 \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430.
  2. \u041e\u043f\u0438\u0448\u0438\u0442\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0438 \u043a\u0440\u0430\u0442\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u0435\u0451 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430.
  3. \u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0442\u043e\u0447\u043d\u044b\u0435 \u0448\u0430\u0433\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c: \u043a\u0430\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432 system.yaml, \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0438 \u043a\u0430\u043a\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f?
  4. \u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u043f\u0438\u0448\u0438\u0442\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0435\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u043b\u0438 \u043a\u0430\u043a \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u0442\u0430\u043a \u0438 \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0435\u0435.
"},{"location":"security/overview/#otvetstvennoe-raskrytie-informatsii","title":"\u041e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438","text":"

Grav \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 responsible disclosure \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430, \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443(\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c) \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0435\u0440\u0438\u043e\u0434 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0430. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u0438\u0441\u043a \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 Grav \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0430\u0432\u0442\u043e\u0440\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u0442\u044c \u0435\u043c\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c, \u043a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0438\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0435, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430.

"},{"location":"security/overview/#protsess-razresheniia-problemy","title":"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b","text":"

\u041e\u0442\u0447\u0451\u0442\u044b \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438, \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0430. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0438\u0439 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 Grav Package Manner \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043e\u043d\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0430.

"},{"location":"security/overview/#podderzhivaemye-versii","title":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438","text":"

\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Grav major.minor. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0430\u0442\u0447\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 major.minor.patch, \u043d\u043e \u043d\u0435 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e \u043d\u0430\u0437\u0430\u0434 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 Grav. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u044f\u0432\u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438.

"},{"location":"security/overview/#urovni-riska","title":"\u0423\u0440\u043e\u0432\u043d\u0438 \u0440\u0438\u0441\u043a\u0430","text":"

\u0415\u0441\u0442\u044c \u043f\u044f\u0442\u044c \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0440\u0438\u0441\u043a\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 Grav \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\u043c:

  • \u041e\u0447\u0435\u043d\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e
  • \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439
  • \u0423\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e
  • \u041c\u0435\u043d\u0435\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0439
  • \u041d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e

\u041e\u043d\u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u00ab\u041e\u0431\u0449\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0446\u0435\u043d\u043a\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u00bb (CMSS) \u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0442\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 (NIST). \u0418\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u043b\u044f Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 RiskCalc Drupal (\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f).

"},{"location":"security/server-side/","title":"\u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","text":""},{"location":"security/server-side/#na-storone-servera","title":"\u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","text":"

\u0417\u0430\u0449\u0438\u0442\u0430 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 PHP. \u0412 \u044d\u0442\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043d\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 Grav, \u043d\u0438 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0430 \u043b\u0438\u0448\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b \u0438 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0437\u0430\u0449\u0438\u0442\u044b Grav \u0438\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440. \u042d\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0430 \u043d\u0435 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439!

"},{"location":"security/server-side/#grav-i-konfiguratsiia-po-umolchaniiu","title":"Grav \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","text":"

\u0414\u043b\u044f Grav \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443. \u041e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 GitHub. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0439\u0442\u0435 \u0432\u0430\u0448\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav \u043f\u043e \u043c\u0435\u0440\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0432\u043d\u0435\u0434\u0440\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 - \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u043c. \u0432 CHANGELOG.

"},{"location":"security/server-side/#konfiguratsiia-php","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PHP","text":"

\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0432\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e PHP, \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043e\u0431\u0449\u0438\u0445 \u0445\u043e\u0441\u0442\u043e\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u0430\u0440\u0435\u043d\u0434\u0443\u0435\u0442\u0435 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u0435 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041f\u0435\u0440\u0435\u0434 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 Grav, \u0432\u043a\u043b\u044e\u0447\u0430\u044f PHP-\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438 \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043d\u0438\u0445.

\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PHP \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 php.ini. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b php --ini \u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0440\u044f\u043c\u044b\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c phpinfo.php \u0432 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 <? php phpinfo(); ?>\u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u041f\u0443\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u00bb. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0444\u0430\u0439\u043b phpinfo.php.

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0449\u0438\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438:

  • \u0412\u0441\u0435\u0433\u0434\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0439\u0442\u0435 \u0441\u0432\u043e\u044e \u0432\u0435\u0440\u0441\u0438\u044e PHP: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e PHP, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435.
  • \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 PHP: \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 PHP.earth.
  • \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f PHP \u0434\u043b\u044f Grav: \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445.
  • \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 Suhosin \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0449\u0438\u0442\u044b PHP.
"},{"location":"security/server-side/#konfiguratsiia-veb-servera","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430","text":"

\u041e\u0431\u044b\u0447\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043b\u0438 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 Nginx \u0438 Apache, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a LiteSpeed \u200b\u200b\u0438\u043b\u0438 CaddyServer. \u0412\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f Grav, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b:

  • \u041a\u0430\u043a \u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0438\u0442\u044c Nginx \u043d\u0430 DigitalOcean \u0438 \u041b\u0443\u0447\u0448\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Nginx \u043d\u0430 nixCraft.
  • \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u044e \u0437\u0430\u0449\u0438\u0442\u044b \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Apache \u043d\u0430 Geek Flare \u0438 \u0421\u043e\u0432\u0435\u0442\u044b \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u044e \u0437\u0430\u0449\u0438\u0442\u044b \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Apache \u043d\u0430 Tecmint.
  • \u0421\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 Litespeed \u043d\u0430 Bobcares.
"},{"location":"security/server-side/#konfiguratsiia-servera","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430","text":"

\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 (\u041e\u0421) \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041e\u0421 \u0443\u044f\u0437\u0432\u0438\u043c\u044b \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u043e\u0432 \u0438 \u0432\u0442\u043e\u0440\u0436\u0435\u043d\u0438\u0439 \u0434\u0430\u0436\u0435 \u0432 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438, \u0447\u0435\u043c PHP, \u0438 \u0438\u0445 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0447\u0430\u0449\u0435. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435: \u0432\u0430\u0448\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 - \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u041e\u0421, PHP \u0438 Grav. \u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0440\u0438\u0441\u043a\u0430 \u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0447\u0430\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f.

\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c HTTPS \u0441 SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u044f \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439. \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0443\u0441\u043b\u0443\u0433\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 Let's Encrypt \u0438\u043b\u0438 CloudFlare.

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 Linux, \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 Linux \u0441 \u0443\u0441\u0438\u043b\u0435\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e. SELinux \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438 \u044d\u0442\u043e \u0442\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u0438\u043c\u0435\u0442\u044c. \u0415\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 nixCraft.

"},{"location":"security/users/","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c","text":""},{"location":"security/users/#polzovateliam","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c","text":"

\u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Grav, \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u044c\u044e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0435\u0435, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445. \u041e\u043d\u0438 \u043a\u0430\u0441\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0447\u0435\u043c\u0443 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0438\u0441\u043a\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0440\u0438\u0441\u043a\u0430 \u0432 \u044d\u0442\u043e\u043c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438.

"},{"location":"security/users/#polzovateli-grav-i-panel-adminki","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 Grav \u0438 \u043f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u043a \u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f. \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0434\u043b\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0441\u0430\u0439\u0442\u043e\u043c. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0431\u0443\u0434\u0443\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u0430, \u0438\u043c \u043e\u0431\u044b\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 admin.pages, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a admin.login.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0443 \u0432\u0430\u0448\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0435 \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u0435\u0437\u0434\u0435. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0443\u043a\u0440\u0430\u043b \u0438\u0445 \u043f\u0430\u0440\u043e\u043b\u044c, \u043e\u043d\u0438 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u2014 \u044d\u0442\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u043d\u043e \u0434\u0430\u0436\u0435 \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u043b\u0435\u0433\u0447\u0435 \u0432\u0437\u043b\u043e\u043c\u0430\u0442\u044c, \u0447\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044c, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0431\u0443\u043a\u0432 \u0438 \u0446\u0438\u0444\u0440. \u0423 \u043b\u044e\u0431\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f \u0445\u043e\u0442\u044f \u2014 \u0430 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u043e\u0439 \u043e\u043f\u044b\u0442 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u0432\u0430\u0436\u0434\u044b. \u041c\u043d\u043e\u0433\u0438\u043c \u043b\u044e\u0434\u044f\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b \u043f\u0430\u0440\u043e\u043b\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445. \u0427\u0442\u043e\u0431\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0411\u043b\u043e\u043a\u043d\u043e\u0442 \u0438 \u044f\u0440\u043e\u0441\u0442\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435.

\u041f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c. \u0418\u043d\u043e\u0433\u0434\u0430 \u044d\u0442\u043e\u0442 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0442\u0430\u043a\u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c. \u0418 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043e\u043d\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 2-\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0430\u0442\u0430\u043a\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0433\u0440\u0443\u0431\u043e\u0439 \u0441\u0438\u043b\u044b \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c Flood Protection.

"},{"location":"security/users/#polzovateli-servera-i-veb-master","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0432\u0435\u0431-\u043c\u0430\u0441\u0442\u0435\u0440","text":"

\u0412\u0435\u0431-\u043c\u0430\u0441\u0442\u0435\u0440 \u2014 \u044d\u0442\u043e \u043b\u0438\u0446\u043e, \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0437\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430 \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u044e\u0449\u0435\u0435 \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u042d\u0442\u043e\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0438\u043b\u0438 \u043e\u043d\u0430 \u2014 \u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0438 \u043f\u0440\u0438 \u043a\u0430\u043a\u0438\u0445 \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c FTP-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0442\u043e\u043b\u044c\u043a\u043e SFTP \u0441 \u0444\u0440\u0430\u0437\u043e\u0432\u043e-\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0438 \u043a\u043b\u044e\u0447\u0435\u0439. \u0425\u043e\u0441\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e FTP \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 SFTP, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440 \u043a\u043b\u044e\u0447\u0435\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e.

\u0412 \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435, \u043d\u0443\u0436\u0435\u043d \u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443. \u041a\u0430\u0436\u0434\u044b\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0438\u0441\u043a \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437-\u0437\u0430 \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043d\u043e \u0438 \u0438\u0437-\u0437\u0430 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u0430\u0436\u0438 \u0438\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043d\u0438 \u043e\u0434\u0438\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c root-\u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443, \u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0438\u0439 PHP \u0434\u043b\u044f Grav, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0438\u043c\u0435\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430.

\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u0435\u043d \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0437\u0430\u0431\u043e\u0442\u0430 \u043e \u0435\u0433\u043e \u0437\u0430\u0449\u0438\u0442\u0435 \u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u043f\u0435\u0440\u0432\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.

"},{"location":"themes/asset-manager/","title":"\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432","text":""},{"location":"themes/asset-manager/#menedzher-aktivov","title":"\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432","text":"

\u0412 Grav 1.6 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0431\u044b\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f CSS \u0438 JavaScript \u0430\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0432 \u0442\u0435\u043c\u0430\u0445. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0438\u0437 \u0442\u0435\u043c \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432 minify, compress \u0438 inline, \u0447\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432.

\u041e\u043d \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u0439 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439, \u0447\u0435\u043c \u0440\u0430\u043d\u044c\u0448\u0435. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0449\u0435 \u0438 \u043b\u0435\u0433\u0447\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0447\u043d\u0435\u0442\u0435 \u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u0434\u0435. \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u043e \u0432\u0441\u0435\u043c Grav \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0445\u0443\u043a\u0430\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0442\u0435\u043c\u0430\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 Twig.

\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f

\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 Assets \u0431\u044b\u043b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d \u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d. \u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u0431\u044b\u043b\u0430 \u0440\u0430\u0437\u0431\u0438\u0442\u0430 \u043d\u0430 3 \u0442\u0440\u0435\u0439\u0442\u0430. testing trait, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435, utils trait, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 (js, inline_js, css, inline_css) \u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043e\u043c \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u0436\u0438\u043c\u0430\u0442\u044c, \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, legacy trait, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044f\u0440\u043b\u044b\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u043e\u0431\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u043f\u0443\u0442\u044f\u043c\u0438, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c.

\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c \u0432 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0434\u043e Grav 1.6, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u043d\u0438\u0436\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441.

"},{"location":"themes/asset-manager/#konfiguratsiia","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"

\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 Grav \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0446\u0438\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 system.yaml, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0438\u043b\u0438 \u0432\u0441\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 user/config/system.yaml:

assets:                                        # \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 (JS, CSS)\n  css_pipeline: false                          # \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 CSS - \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b.\n  css_pipeline_include_externals: true         # \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n  css_pipeline_before_excludes: true           # \u041e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0434\u043e \u043b\u044e\u0431\u044b\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\n  css_minify: true                             # \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c CSS \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438\n  css_minify_windows: false                    # \u0421\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c Windows. False \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0437-\u0437\u0430 ThreadStackSize\n  css_rewrite: true                            # \u041f\u0435\u0440\u0435\u043f\u0438\u0448\u0438\u0442\u0435 \u0432\u0441\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 CSS \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438\n  js_pipeline: false                           # \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 JS - \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 JS \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b.\n  js_pipeline_include_externals: true          # \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\n  js_pipeline_before_excludes: true            # \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438\n  js_module_pipeline: false                    # \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 JS-\u043c\u043e\u0434\u0443\u043b\u0435\u0439 - \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 JS-\u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b\n  js_module_pipeline_include_externals: true   # \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\n  js_module_pipeline_before_excludes: true     # \u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043f\u0435\u0440\u0435\u0434 \u043b\u044e\u0431\u044b\u043c\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438\n  js_minify: true                              # \u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c JS \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438\n  enable_asset_timestamp: false                # \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432\n  collections:\n    jquery: system://assets/jquery/jquery-3.x.min.js\n
"},{"location":"themes/asset-manager/#struktura","title":"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430","text":"

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043d\u0438\u0436\u0435. \u0412 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043e\u0445\u0432\u0430\u0442\u0430 \u043e\u043d\u0438:

  • Group - \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a head (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0438bottom
  • Position - before, pipeline(default) \u0438 after. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0433\u0434\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0430\u043a\u0442\u0438\u0432.
  • Priority - \u042d\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c*, \u0433\u0434\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 100) \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u0438\u043c\u0438 \u0446\u0435\u043b\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438. 10 - \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.
CSS\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u0413\u0440\u0443\u043f\u043f\u0430 (head) \u2502\n\u2502\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u2502 \u041f\u043e\u0437\u0438\u0446\u0438\u044f     \u2502\u2502        \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 100  \u2502\u2500\u2500\u2500\u2500\u2500\u2510     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u2502\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502\u2502        \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524     \u251c\u2500\u2500\u2500\u2500\u25b6\u2502       CSS      \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502        \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 99   \u2502\u2500\u2500\u2500\u2500\u2500\u2524     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502\u2502\u2502 before    \u2502\u251c\u253c\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u25b6\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524     \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502     \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 1    \u2502\u2500\u2500\u2500\u2500\u2500\u2524     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u2502\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\u2502\u2502  \u2502     \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524     \u251c\u2500\u2500\u2500\u2500\u25b6\u2502 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 CSS \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502     \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 0    \u2502\u2500\u2500\u2500\u2500\u2500\u2518     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502\u2502\u2502 pipeline  \u2502\u251c\u253c\u2500\u2500\u2524     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502\n\u2502\u2502\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\u2502\u2502  \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502\n\u2502\u2502\u2502 after     \u2502\u251c\u253c\u2500\u2500\u2518\n\u2502\u2502\u2502           \u2502\u2502\u2502\n\u2502\u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2502\u2502\n\u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\nJS\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u0413\u0440\u0443\u043f\u043f\u0430 (head) \u2502\n\u2502\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u2502 \u041f\u043e\u0437\u0438\u0446\u0438\u044f     \u2502\u2502        \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 100  \u2502\u2500\u2500\u2500\u2500\u2500\u2510     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u2502\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502\u2502        \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524     \u251c\u2500\u2500\u2500\u2500\u25b6\u2502        JS      \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502        \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 99   \u2502\u2500\u2500\u2500\u2500\u2500\u2524     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502\u2502\u2502 before    \u2502\u251c\u253c\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u25b6\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524     \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502     \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 1    \u2502\u2500\u2500\u2500\u2500\u2500\u2524     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u2502\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\u2502\u2502  \u2502     \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524     \u251c\u2500\u2500\u2500\u2500\u25b6\u2502  \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 JS \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502     \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 0    \u2502\u2500\u2500\u2500\u2500\u2500\u2518     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502\u2502\u2502 pipeline  \u2502\u251c\u253c\u2500\u2500\u2524     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502\n\u2502\u2502\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\u2502\u2502  \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502\n\u2502\u2502\u2502 after     \u2502\u251c\u253c\u2500\u2500\u2518\n\u2502\u2502\u2502           \u2502\u2502\u2502\n\u2502\u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2502\u2502\n\u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\nJS-\u043c\u043e\u0434\u0443\u043b\u044c\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u0413\u0440\u0443\u043f\u043f\u0430 (head) \u2502\n\u2502\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u2502 \u041f\u043e\u0437\u0438\u0446\u0438\u044f     \u2502\u2502        \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 100  \u2502\u2500\u2500\u2500\u2500\u2500\u2510     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u2502\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502\u2502        \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524     \u251c\u2500\u2500\u2500\u2500\u25b6\u2502        JS-\u043c\u043e\u0434\u0443\u043b\u044c      \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502        \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 99   \u2502\u2500\u2500\u2500\u2500\u2500\u2524     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502\u2502\u2502 before    \u2502\u251c\u253c\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u25b6\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524     \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502     \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 1    \u2502\u2500\u2500\u2500\u2500\u2500\u2524     \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502\u2502\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\u2502\u2502  \u2502     \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524     \u251c\u2500\u2500\u2500\u2500\u25b6\u2502  \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 JS-\u043c\u043e\u0434\u0443\u043b\u044c \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502     \u2502 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 0    \u2502\u2500\u2500\u2500\u2500\u2500\u2518     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502\u2502\u2502 pipeline  \u2502\u251c\u253c\u2500\u2500\u2524     \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502\n\u2502\u2502\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\u2502\u2502  \u2502\n\u2502\u2502\u2502           \u2502\u2502\u2502  \u2502\n\u2502\u2502\u2502 after     \u2502\u251c\u253c\u2500\u2500\u2518\n\u2502\u2502\u2502           \u2502\u2502\u2502\n\u2502\u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2502\u2502\n\u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e CSS, JS \u0438 JS-\u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043f\u0440\u0438 \u0432\u044b\u0432\u043e\u0434\u0435. \u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a InlineCSS, InlineJS \u0438 Inline JS Module \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 after. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0430\u043a\u0442\u0438\u0432 \u0432 \u043b\u044e\u0431\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435.

"},{"location":"themes/asset-manager/#aktivy-v-temakh","title":"\u0410\u043a\u0442\u0438\u0432\u044b \u0432 \u0442\u0435\u043c\u0430\u0445","text":""},{"location":"themes/asset-manager/#obzor","title":"\u041e\u0431\u0437\u043e\u0440","text":"

\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b CSS \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 assets.addCss() \u0438\u043b\u0438 assets.addInlineCss(), \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0435 \u044d\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u0447\u0435\u0440\u0435\u0437 assets.css(). \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c, \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438\u043b\u0438 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435\u043c, \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u043f\u0440\u0438 \u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.

\u0420\u0435\u0441\u0443\u0440\u0441\u044b JS \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 assets.addJs() \u0438 assets.addInlineJs(). \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 assets.add(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u0442\u0438\u043f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430, \u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u043c\u0435\u0442\u043e\u0434\u043e\u0432.

\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 1.7.27, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 Grav \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 JS-\u043c\u043e\u0434\u0443\u043b\u0438. \u042d\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0430\u043a\u0442\u0438\u0432\u044b JS, \u043d\u043e \u0438\u0445 \u0442\u0438\u043f - type=\"module\", \u0438 \u043e\u043d\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 assets.addJsModule() \u0438 assets.addInlineJsModule(). \u041e\u0431\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 assets.add() \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f JS-\u043c\u043e\u0434\u0443\u043b\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 .mjs. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043b\u044e\u0431\u043e\u0439 \u0444\u0430\u0439\u043b .js \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 JS.

\u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u043c\u043e\u0434\u0443\u043b\u044f\u0445 JS, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u044d\u0442\u0438\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
  • https://v8.dev/features/modules
  • https://javascript.info/modules-intro

\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442:

  • \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0433\u0440\u0443\u043f\u043f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0438\u200b/\u0438\u043b\u0438 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432,
  • \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 assets.add*().
"},{"location":"themes/asset-manager/#primer","title":"\u041f\u0440\u0438\u043c\u0435\u0440","text":"

\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c CSS-\u0444\u0430\u0439\u043b\u044b \u0432 \u0441\u0432\u043e\u044e \u0442\u0435\u043c\u0443, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0442\u0435\u043c\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e quark, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 Grav. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u0442\u0435 \u043d\u0430 templates/partials/base.html.twig, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435:

<!DOCTYPE html>\n<html>\n    <head>\n    ...\n\n    {% block stylesheets %}\n        {% do assets.addCss('theme://css-compiled/spectre.css') %}\n        {% do assets.addCss('theme://css-compiled/theme.css') %}\n        {% do assets.addCss('theme://css/custom.css') %}\n        {% do assets.addCss('theme://css/line-awesome.min.css') %}\n    {% endblock %}\n\n    {% block javascripts %}\n        {% do assets.addJs('jquery', 101) %}\n        {% do assets.addJs('theme://js/jquery.treemenu.js', { group: 'bottom' }) %}\n        {% do assets.addJs('theme://js/site.js', { group: 'bottom' }) %}\n        {% do assets.addJsModule('plugin://my_plugin/app/main.js', { group: 'bottom' }) %}\n    {% endblock %}\n\n    {% block assets deferred %}\n        {{ assets.css()|raw }}\n        {{ assets.js()|raw }}\n    {% endblock %}\n    </head>\n\n    <body>\n    ...\n\n    {% block bottom %}\n        {{ assets.js('bottom')|raw }}\n    {% endblock %}\n    </body>\n</html>\n

\u0422\u0435\u0433 twig block stylesheets \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0438\u0435 \u0435\u0435. \u0412\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 do assets.addCss().

\u0422\u0435\u0433 {% do %} \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 Twig, \u0438 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0431\u0435\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430.

\u041c\u0435\u0442\u043e\u0434 addCss() \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 CSS-\u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0434\u0430\u0434\u0438\u0442\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0442\u043e \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0438\u043b\u0435\u0439. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u043a\u0430\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442, \u0442\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0434\u0438\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0412\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 PHP stream wrapper theme://, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043b\u044f Grav \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u044b.

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f assets.addJs('jquery', 101) \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e jquery, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Assets. \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0434\u0435\u0441\u044c 101 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0440\u0430\u0432\u0435\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e 10. \u0411\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u043e \u0431\u044b assets.addJs('jquery', {priority: 101}). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430\u0440\u044f\u0434\u0443 \u0441 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c.

\u0412\u044b\u0437\u043e\u0432 assets.css()|raw \u0434\u0435\u043b\u0430\u0435\u0442 CSS-\u0430\u043a\u0442\u0438\u0432\u044b HTML-\u0442\u0435\u0433\u0430\u043c\u0438. \u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d, \u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0433\u0440\u0443\u043f\u043f\u0430 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 head. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u043e \u0432 \u0431\u043b\u043e assets deferred. \u042d\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 Grav 1.6, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 Twig \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 (\u0438\u043b\u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435), \u0438 \u0432\u0441\u0451 \u0436\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0435 head, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e.

\u0411\u043b\u043e\u043a bottom \u0432 \u0441\u0430\u043c\u043e\u043c \u043a\u043e\u043d\u0446\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 JavaScript, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 bottom.

"},{"location":"themes/asset-manager/#dobavlenie-aktivov","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432","text":""},{"location":"themes/asset-manager/#add-asset-options","title":"add(asset, [options])","text":"

\u041c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0443, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043b\u0443\u0447\u0448\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u0440\u044f\u043c\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f CSS, Link, JS \u0438\u043b\u0438 JS-\u043c\u043e\u0434\u0443\u043b\u044f. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u043c. \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u041f\u0440\u044f\u043c\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b\u00bb.

\u041c\u0430\u0441\u0441\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 - \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 jquery, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044f\u0440\u043b\u044b\u043a \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u043c\u0435\u0442\u043e\u0434, \u0435\u0441\u043b\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u044d\u0442\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442.

"},{"location":"themes/asset-manager/#addcss-asset-options","title":"addCss(asset, [options])","text":"

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 10, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d. \u0411\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0430\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u0438\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c. \u041e\u043f\u0446\u0438\u044f pipeline \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u043a\u0442\u0438\u0432 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f/\u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u044b\u0439, \u043e\u043f\u0446\u0438\u044f loading \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u0430\u043a\u0442\u0438\u0432 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u0442\u0438\u043b\u0435\u0439 \u0438\u043b\u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0433 \u0441\u0442\u0438\u043b\u044f.

"},{"location":"themes/asset-manager/#addlink-asset-options","title":"addLink($asset, [options])","text":"

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 Link, \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u0433\u0430 <link>. \u041e\u043d \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u0433\u043e\u0432 \u0441\u0441\u044b\u043b\u043e\u043a \u0432 head \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0444\u0430\u0439\u043b\u0430\u043c\u0438 CSS. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u0435\u043d 10, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d. \u0411\u043e\u043b\u044c\u0448\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0430\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u0438\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c.

\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432, link() \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 inline.

"},{"location":"themes/asset-manager/#addinlinecss-css-options","title":"addInlineCss(css, [options])","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 CSS \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0433\u0430 \u0441\u0442\u0438\u043b\u044f. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e. \u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0441\u043c. \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 { 'loading': 'inline' } \u043c\u0435\u0442\u043e\u0434\u043e\u0432 addCss() \u0438 css().

"},{"location":"themes/asset-manager/#addjs-asset-options","title":"addJs(asset, [options])","text":"

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 JavaScript. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 10, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d. \u0411\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0430\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u0438\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c. \u041e\u043f\u0446\u0438\u044f pipeline \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u043a\u0442\u0438\u0432 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f/\u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043d\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e, \u043e\u043f\u0446\u0438\u044f loading \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0444\u0430\u0439\u043b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438\u043b\u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0442\u0435\u0433 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.

"},{"location":"themes/asset-manager/#addinlinejs-javascript-options","title":"addInlineJs(javascript, [options])","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 JavaScript \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0433 \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e. \u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0441\u043c. \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 { 'loading': 'inline' } \u043c\u0435\u0442\u043e\u0434\u043e\u0432 addJs() \u0438 js().

"},{"location":"themes/asset-manager/#addjsmodule-asset-options","title":"addJsModule(asset, [options])","text":"

\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 JavaScript. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u0435\u043d 10, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d. \u0411\u043e\u043b\u044c\u0448\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0430\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u0438\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 pipeline \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u043a\u0442\u0438\u0432 \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f/\u043c\u0438\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u044b\u0439, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 loading \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u0430\u043a\u0442\u0438\u0432 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0444\u0430\u0439\u043b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438\u043b\u0438 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0442\u0435\u0433 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.

"},{"location":"themes/asset-manager/#addinlinejsmodule-javascript-options","title":"addInlineJsModule(javascript, [options])","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 JavaScript \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0433\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u0441\u043c. \u043e\u043f\u0446\u0438\u044e { 'loading': 'inline' } \u043c\u0435\u0442\u043e\u0434\u043e\u0432 addJsModule() \u0438 js().

"},{"location":"themes/asset-manager/#registercollection-name-array","title":"registerCollection(name, array)","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS \u0438 JavaScript \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c add(). \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0442\u0435\u043c\u0430\u043c\u0438 \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438, \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a jQuery \u0438\u043b\u0438 Bootstrap.

"},{"location":"themes/asset-manager/#parametry","title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","text":"

Where appropriate, you can pass in an array of asset options. The core options are:

"},{"location":"themes/asset-manager/#dlia-css","title":"\u0414\u043b\u044f CSS","text":"
  • priority: \u0426\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - 10)

  • position: pipeline \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c before \u0438\u043b\u0438 after.

  • loading: inline \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u043a\u0442\u0438\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u0442\u0438\u043b\u0435\u0439). \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 position: before \u0438\u043b\u0438 position: after, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 position: pipeline (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).

  • group: \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e head)

"},{"location":"themes/asset-manager/#dlia-js-i-js-modulei","title":"\u0414\u043b\u044f JS \u0438 JS-\u043c\u043e\u0434\u0443\u043b\u0435\u0439","text":"
  • priority: \u0426\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - 10)

  • position: pipeline \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c before \u0438\u043b\u0438 after.

  • loading: \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 \u0442\u0438\u043f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 async, defer, async defer \u0438\u043b\u0438 inline. \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 position: before \u0438\u043b\u0438 position: after, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 position: pipeline (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).

  • group: \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e head)

"},{"location":"themes/asset-manager/#drugie-atributy","title":"\u0414\u0440\u0443\u0433\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b","text":"

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u0442\u0438\u043c\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a {id: 'custom-id'} \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a id=\"custom-id\" \u0432 \u0442\u0435\u0433\u0435 HTML. \u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a json-ld, \u0447\u0435\u0440\u0435\u0437 addInlineJs(), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f {type: 'application/ld+json'}.

"},{"location":"themes/asset-manager/#primery","title":"\u041f\u0440\u0438\u043c\u0435\u0440\u044b","text":"

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

{% do assets.addCss('page://01.blog/assets-test/example.css?foo=bar', { priority: 20, loading: 'inline', position: 'before'}) %}\n

\u0411\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u043d\u043e \u043a\u0430\u043a:

<style>\nh1.blinking {\n    text-decoration: underline;\n}\n</style>\n<link.....\n

\u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:

{% do assets.addJs('page://01.blog/assets-test/example.js', {loading: 'async', id: 'custom-css'}) %}\n

\u0411\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u043d\u043e \u043a\u0430\u043a:

<script src=\"/grav/user/pages/01.blog/assets-test/example.js\" async id=\"custom-css\"></script>\n

\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u0433\u0430 link:

{% do assets.addLink('theme://images/favicon.png', { rel: 'icon', type: 'image/png' }) %}\n{% do assets.addLink('plugin://grav-plugin/build/js/vendor.js', { rel: 'modulepreload' }) %}\n

\u0411\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u043d\u043e \u043a\u0430\u043a:

<link rel=\"icon\" type=\"image/png\" href=\"/user/themes/quark/images/favicon.png\">\n<link href=\"/user/plugins/grav-plugin/build/js/vendor.js\" rel=\"modulepreload\">\n
"},{"location":"themes/asset-manager/#rendering-aktivov","title":"\u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0430\u043a\u0442\u0438\u0432\u043e\u0432","text":"

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS \u0438 JavaScript.

"},{"location":"themes/asset-manager/#css-group-options-include-link-true","title":"css([group, [options], include_link = true)","text":"

\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 CSS-\u0430\u043a\u0442\u0438\u0432\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e head). \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0442\u0430\u043a\u043e\u0432\u044b

  • loading: inline \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0435\u0433\u043e \u043e\u043f\u0446\u0438\u0435\u0439 position)

  • link attributes, \u0441\u043c. \u043d\u0438\u0436\u0435 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: {'type': 'text/css', 'rel': 'stylesheet'}). \u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 inline \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b

\u041a\u043e\u0433\u0434\u0430 include_link \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432\u044b\u0437\u043e\u0432 css() \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 link().

\u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0433\u0440\u0443\u043f\u043f\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u043e\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u043a \u043d\u0438\u0437\u043a\u043e\u043c\u0443), \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u044b.

\u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430.

\u041a\u0430\u0436\u0434\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043a\u0430\u043a \u0441\u0441\u044b\u043b\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0438\u043b\u0435\u0439, \u043b\u0438\u0431\u043e \u043a\u0430\u043a \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 loading \u0430\u043a\u0442\u0438\u0432\u0430 \u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043b\u0438 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 {'loading':inline'}. CSS, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044eaddInlineCss(), \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438after, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044eposition: before`

"},{"location":"themes/asset-manager/#link-group-options","title":"link(group, [options])","text":"

\u0412\u044b\u0434\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e head). \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0443, \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 head, \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0435\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0435\u0433.

\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432, link() \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 inline.

"},{"location":"themes/asset-manager/#js-group-options-include-js-module-true","title":"js(group, [options], include_js_module = true)","text":"

Renders JavaScript assets that have been added to an Asset Manager's group (default is head). Options are

  • loading: inline \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0435\u0433\u043e \u043e\u043f\u0446\u0438\u0435\u0439 position)

  • script attributes, \u0441\u043c. \u043d\u0438\u0436\u0435 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: {'type': 'text/javascript'}). \u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 inline \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b

\u041a\u043e\u0433\u0434\u0430 include_js_module \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432\u044b\u0437\u043e\u0432 js() \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 jsModule().

\u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430\u043a\u0442\u0438\u0432\u044b \u0433\u0440\u0443\u043f\u043f\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e, \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0443 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 (\u043e\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u043a \u043d\u0438\u0437\u043a\u043e\u043c\u0443), \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432.

\u0415\u0441\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430\u043a\u0442\u0438\u0432\u044b, \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430. \u041a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043e \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 js_pipeline_before_excludes.

\u041a\u0430\u0436\u0434\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043a\u0430\u043a \u0441\u0441\u044b\u043b\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0438\u043b\u0435\u0439, \u043b\u0438\u0431\u043e \u043a\u0430\u043a \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 loading \u0430\u043a\u0442\u0438\u0432\u0430 \u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043b\u0438 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 {'loading':inline'}. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 JS \u2014 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u043f\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430js(). JS, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044eaddInlineJs(), \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438after, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044eposition: before`

"},{"location":"themes/asset-manager/#jsmodule-group-options","title":"jsModule(group, [options])","text":"

\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440 js(), \u043d\u043e \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439 JavaScript. \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c \u0442\u0438\u043f\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f type=\"module\", \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0435 inline.

"},{"location":"themes/asset-manager/#all-group-options","title":"all(group, [options])","text":"

\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f: css(), link(), js(), jsModule().

\u042d\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u0432\u0430\u0448 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0430\u0439\u043b twig (\u043e\u0431\u044b\u0447\u043d\u043e base.html.twig).

{% block assets deferred %}\n  {{ assets.all()|raw }}\n{% endblock %}\n
"},{"location":"themes/asset-manager/#imenovannye-aktivy-i-kollektsii","title":"\u0418\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0430\u043a\u0442\u0438\u0432\u044b \u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438","text":"

\u0422\u0435\u043f\u0435\u0440\u044c \u0443 Grav \u0435\u0441\u0442\u044c \u043c\u043e\u0449\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f named assets, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e CSS \u0438 JavaScript \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u043e \u0438\u043c\u0435\u043d\u0438. \u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0438\u043c\u044f, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e. Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c jQuery, \u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 system.yaml, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u044e\u0431\u043e\u0439 \u0442\u0435\u043c\u043e\u0439 \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c:

assets:\n  collections:\n    jquery: system://assets/jquery/jquery-2.1.3.min.js\n    bootstrap:\n        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\n        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css\n        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 registerCollection() \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.

$assets = $this->grav['assets'];\n$bootstrapper_bits = [https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css,\n                      https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css,\n                      https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js];\n$assets->registerCollection('bootstrap', $bootstrap_bits);\n$assets->add('bootstrap', 100);\n

\u041f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 bootstrapper.

"},{"location":"themes/asset-manager/#kollektsii-s-atributami","title":"\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0438/\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e CDN \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 (SRI). \u042d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u043a\u0430\u043a \u043c\u0430\u0441\u0441\u0438\u0432, \u0433\u0434\u0435 \u043a\u043b\u044e\u0447\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u0430, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

assets:\n  collections:\n    jquery_and_ui:\n        https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js:\n            integrity: 'sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ=='\n            group: 'bottom'\n        https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:\n            integrity: 'sha512-uto9mlQzrs59VwILcLiRYeLKPPbS/bT71da/OEBYEwcdNUk8jYIy+D176RYoop1Da+f9mvkYrmj5MCLZWEtQuA=='\n            group: 'bottom'\n

\u0417\u0430\u0442\u0435\u043c, \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 JS \u0432 \u0441\u0432\u043e\u0439 twig \u0447\u0435\u0440\u0435\u0437 {% do assets.addJs('jquery_and_ui', { defer: true }) %}, \u0430\u043a\u0442\u0438\u0432\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a:

<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js\" defer=\"1\" integrity=\"sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js\" defer=\"1\" integrity=\"sha512-uto9mlQzrs59VwILcLiRYeLKPPbS/bT71da/OEBYEwcdNUk8jYIy+D176RYoop1Da+f9mvkYrmj5MCLZWEtQuA==\"></script>\n

\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442 defer \u0431\u044b\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 twig \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d \u043a\u043e \u0432\u0441\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u0430\u043c \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e Grav \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043a\u0430\u043a \u0438\u0437 twig, \u0442\u0430\u043a \u0438 \u0438\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f yaml, \u043e\u0442\u0434\u0430\u0432\u0430\u044f \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 yaml.

\u0415\u0441\u043b\u0438 \u0431\u044b \u0430\u043a\u0442\u0438\u0432 jquery-ui.min.js \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u043b \u0430\u0442\u0440\u0438\u0431\u0443\u0442 defer: null, \u0442\u043e\u0433\u0434\u0430 \u044d\u0442\u043e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0438\u043c\u0435\u043b \u0431\u044b \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043d\u0430\u0434 defer: 1.

"},{"location":"themes/asset-manager/#sgruppirovannye-aktivy","title":"\u0421\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0430\u043a\u0442\u0438\u0432\u044b","text":"

\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443 (group) \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u0425\u043e\u0442\u044f \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f CSS, \u044d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f JavaScript, \u0433\u0434\u0435 \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b JS \u0438\u043b\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 JS \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 - \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0427\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0443 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:

{% do assets.addJs('theme://js/example.js', {'priority':102, 'group':'bottom'}) %}\n

\u0417\u0430\u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u0432\u043e\u044e \u0442\u0435\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

{{ assets.js('bottom') }}\n

\u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0433\u0440\u0443\u043f\u043f\u0430, \u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0433\u0440\u0443\u043f\u043f\u0430 head. \u0415\u0441\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u0430 \u0433\u0440\u0443\u043f\u043f\u0430 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0430 \u0433\u0440\u0443\u043f\u043f\u0430 head. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043d\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 100% \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0442\u0435\u043c\u0430\u043c\u0438.

\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0438 \u043a CSS \u0444\u0430\u0439\u043b\u0430\u043c:

{% do assets.addCss('theme://css/ie8.css', {'group':'ie'}) %}\n

\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433:

{{ assets.css('ie') }}\n
"},{"location":"themes/asset-manager/#izmenenie-atributov-vizualiziruemykh-aktivov-css-js","title":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 CSS/JS","text":"

CSS \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 rel=\"stylesheet\" \u0438 type=\"text/css\", \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a JS \u0438\u043c\u0435\u0435\u0442 type=\"text/javascript\".

\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c Grav, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u043b\u0430 \u0435\u0433\u043e \u0441 \u044d\u0442\u0438\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c.

\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 rel \u043d\u0430 \u0433\u0440\u0443\u043f\u043f\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432:

{% do assets.addCSS('theme://whatever.css', {'group':'my-alternate-group'}) %}\n...\n{{ assets.css('my-alternate-group', {'rel': 'alternate'}) }}\n
"},{"location":"themes/asset-manager/#vstraivanie-aktivov","title":"\u0412\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432","text":"

\u0412\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 CSS (\u0438 JS) \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 HTML, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u0435 \u0434\u043e\u0436\u0438\u0434\u0430\u044f\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0438\u043b\u0435\u0439 \u0438\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0430\u0439\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 CSS.

\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u044f\u043c\u0430\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043a\u043e\u0434\u0430 CSS \u0438\u043b\u0438 JavaScript \u0432 \u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Sass-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 CSS. \u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 CSS \u0438 JS \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0442\u0430\u043a\u0436\u0435 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 Asset Manager \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0434\u0430\u0436\u0435 \u0446\u0435\u043b\u044b\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b.

\u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u043f\u0446\u0438\u044e {'loading': 'inline'} \u0441 addCss() \u0438\u043b\u0438 addJs(). \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0440\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e js() \u0438\u043b\u0438 css(), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.

\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f system.yaml \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c app.css \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u043c CSS, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c Sass:

assets:\n  collections:\n    css-inline:\n      - 'http://fonts.googleapis.com/css?family=Ubuntu:400|Open+Sans:400,400i,700'\n      - 'theme://css-compiled/app.css'\n    js-inline:\n      - 'https://use.fontawesome.com/<embedcode>.js'\n    js-async:\n      - 'theme://foundation/dist/assets/js/app.js'\n      - 'theme://js/header-display.js'\n

\u0428\u0430\u0431\u043b\u043e\u043d \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e head \u0438 head-link \u0434\u043b\u044f CSS, head \u0438 head-async \u0434\u043b\u044f JS. \u0413\u0440\u0443\u043f\u043f\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e head \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435:

{% block stylesheets %}\n    {% do assets.addCss('css-inline') %}\n    {% do assets.addCss('css-link', {'group': 'head-link'}) %}\n{% endblock %}\n{{ assets.css('head-link') }}\n{{ assets.css('head', {'loading': 'inline'}) }}\n{% block javascripts %}\n    {% do assets.addJs('js-inline') %}\n    {% do assets.addJs('js-async', {'group': 'head-async'}) %}\n{% endblock %}\n{{ assets.js('head-async', {'loading': 'async'}) }}\n{{ assets.js('head', {'loading': 'inline'}) }}\n
"},{"location":"themes/asset-manager/#staticheskie-aktivy","title":"\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u044b","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u044b \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 url(). \u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0441\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u0442\u0435\u043c\u044b. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e:

<img src=\"{{ url(\"theme://\" ~ widget.image) }}\" alt=\"{{ widget.text|e }}\" />\n

\u041c\u0435\u0442\u043e\u0434 url() \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 true \u0438\u043b\u0438 false, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c URL \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0438 \u0434\u043e\u043c\u0435\u043d\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

url(\"theme://some/extra.css\", true)\n
"},{"location":"themes/customization/","title":"\u041a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f","text":""},{"location":"themes/customization/#kastomizatsiia","title":"\u041a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f","text":"

\u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0435\u043c\u0443, \u0438 Grav \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0448 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0432 \u044d\u0442\u043e\u043c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0449\u0435.

"},{"location":"themes/customization/#polzovatelskii-css","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 CSS","text":"

\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0435\u043c\u0443 - \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b custom.css. \u0422\u0435\u043c\u0430 Quark \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0444\u0430\u0439\u043b css/custom.css \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0437\u0430 \u043d\u0430\u0441, \u0438 \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d, \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 HTML.

\u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c custom.css \u0432 \u043f\u0430\u043f\u043a\u0435 css/, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442 \u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f. \u0412\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b CSS \u0441 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c CSS \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

custom.css
body a {\n  color: #cc0000;\n}\n

\u042d\u0442\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u0446\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0446\u0432\u0435\u0442.

"},{"location":"themes/customization/#polzovatelskii-scss-less","title":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 SCSS/LESS","text":"

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 CSS \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 _custom.scss. Quark \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c SCSS, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u0441 CSS, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c CSS \u0437\u0430 \u0441\u0447\u0451\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440, \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432, \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u043f\u0440\u0438\u043c\u0435\u0441\u0435\u0439.

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0443\u0433\u0430\u044e\u0449\u0438\u043c, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 SCSS, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435, \u0438 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u043d\u0430\u0447\u043d\u0435\u0442\u0435, \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043a \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u043c\u0443 CSS. \u041e\u0431\u0435\u0449\u0430\u044e!

\u0412 \u0442\u0435\u043c\u0435 Quark \u0435\u0441\u0442\u044c \u043f\u0430\u043f\u043a\u0430 scss/, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432 .scss. \u041e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u043f\u0430\u043f\u043a\u0443 css-compiled/.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c scss/theme/_custom.scss \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0444\u0430\u0439\u043b theme.scss \u0432\u043d\u0438\u0437\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f @import 'theme/custom';. \u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0434\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432:

  1. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0444\u0430\u0439\u043b css-compiled/theme.min.css \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 CSS.
  2. \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e SCSS, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0432 \u0442\u0435\u043c\u0435.
  3. \u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c SCSS, \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044e\u0449\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443.

\u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:

_custom.scss
body {\n  a {\n    color: darken($core-accent, 30%);\n  }\n}\n

\u041e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043b\u044e\u0431\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0435. \u042d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043c, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0438\u0436\u0435.

"},{"location":"themes/customization/#wellington-scss","title":"Wellington SCSS","text":"

Wellington \u044d\u0442\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0434\u043b\u044f libsass, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u043a\u0430\u043a \u0434\u043b\u044f Linux, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f MacOS. \u041e\u043d \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 SCSS, \u0447\u0435\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 scss \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Ruby. \u041f\u043e\u0434 \u00ab\u0431\u044b\u0441\u0442\u0440\u0435\u0435\u00bb \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 20 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435!. \u041e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c (\u0447\u0435\u0440\u0435\u0437 brew):

brew install wellington\n

\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0430\u043f\u043a\u0438 scss \u0432 \u043f\u0430\u043f\u043a\u0443 css-compiled, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a.

Wellington \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0435\u043c Team Grav, \u0438 \u043e\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442!

"},{"location":"themes/customization/#nasledovanie-temy","title":"\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043c\u044b","text":"

\u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0442\u0435\u043c\u044b, \u043d\u043e \u043e\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a.

\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 \u0442\u0435\u043c\u0443 \u043a\u0430\u043a \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0435, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0431\u0438\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c. \u0411\u043e\u043b\u044c\u0448\u0438\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443 \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u043d\u0435 \u0432\u043b\u0438\u044f\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443.

\u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0442\u0435\u043c\u044b:

  1. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 (CLI) \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c DevTools.
  2. \u0412\u0440\u0443\u0447\u043d\u0443\u044e.
"},{"location":"themes/customization/#nasledovanie-s-ispolzovaniem-cli","title":"\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c CLI","text":"

\u041a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0423\u0447\u0435\u0431\u043d\u0438\u043a\u0435 \u043f\u043e \u0442\u0435\u043c\u0430\u043c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043b\u0430\u0433\u0438\u043d DevTools. \u041d\u043e \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0442\u0435\u043c\u0443. \u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043f\u0440\u043e\u0441\u0442\u0430.

  1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d DevTools, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e.
  2. \u0417\u0430\u0442\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0442\u0438\u043f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 (Please choose a template type), \u0432\u0432\u0435\u0434\u0438\u0442\u0435 inheritance (\u00ab\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u00bb). \u0415\u0441\u043b\u0438 Quark \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430, \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a 0. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 0, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043e\u0442 Quark. \u0411\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432\u0430\u0448\u0430 \u043d\u043e\u0432\u0430\u044f \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043c\u0430.
  3. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 YAML \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0435 (\u0438\u043b\u0438 \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 user/config/themes, \u0435\u0441\u043b\u0438 \u0432\u044b \u0435\u0451 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438), \u0432\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u043e\u0432\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 YAML \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b: / user/themes/mytheme/mytheme.yaml.
  4. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0440\u0430\u0437\u0434\u0435\u043b form \u0438\u0437 /user/themes/quark/blueprints.yaml' \u0432/user/themes/mytheme/blueprints.yaml` \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0442\u0435\u043c\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435. (\u0418\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435.)
  5. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0442\u0435\u043c\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e mytheme, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 pages: theme: \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 user/config/system.yaml:
pages:\n theme: mytheme\n
"},{"location":"themes/customization/#nasledovanie-vruchnuiu","title":"\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e","text":"

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438:

  1. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443: user/themes/mytheme \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0439 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b.
  2. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b YAML \u0442\u0435\u043c\u044b \u0438\u0437 \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0435 (\u0438\u043b\u0438 \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 user/config/themes, \u0435\u0441\u043b\u0438 \u0432\u044b \u0435\u0451 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438), \u0432 /user/themes/mytheme/mytheme.yaml \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 (\u0437\u0430\u043c\u0435\u043d\u0438\u0432 user/themes/quark \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0435):
streams:\n  schemes:\n    theme:\n      type: ReadOnlyStream\n      prefixes:\n        '':\n          - user/themes/mytheme\n          - user/themes/quark\n
  1. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b /user/themes/quark/blueprints.yaml \u0432 /user/themes/mytheme/blueprints.yaml, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0442\u0435\u043c\u044b \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0443.

  2. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0442\u0435\u043c\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e mytheme, \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 pages: theme: \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 user/config/system.yaml:

pages:\n  theme: mytheme\n
  1. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043b\u0430\u0441\u0441\u0430 \u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b user/themes/mytheme/mytheme.php:
<?php\nnamespace Grav\\Theme;\n\nclass Mytheme extends Quark\n{\n    // Some new methods, properties etc.\n}\n?>\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c mytheme \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u0438 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u0442\u0435\u043c\u0443 mytheme, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 quark. \u041f\u043e \u0441\u0443\u0442\u0438, Quark \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u043e\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b.

\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f JS, CSS \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435.

"},{"location":"themes/customization/#ispolzovanie-scss","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 SCSS","text":"

\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b SCSS, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u043d\u043e\u0432\u043e\u043c \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 mytheme, \u0430 \u0437\u0430\u0442\u0435\u043c - quark. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0435\u0439.

  1. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0430\u0439\u043b SCSS \u0438\u0437 quark, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b @ import \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0443\u0431\u0444\u0430\u0439\u043b\u043e\u0432. \u0418\u0442\u0430\u043a, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b theme.scss \u0438\u0437 quark/ scss/ \u0432 \u043f\u0430\u043f\u043a\u0443 mytheme/scss/.
  2. \u041d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 theme.scss, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u043e\u043a \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u043d\u0430 @import '/quark/scss/theme/';, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438\u0437 Quark. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 @import '/quark/scss/theme/variables';.
  3. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 @import 'theme/custom'; \u0432 \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 theme.scss.
  4. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 mytheme/scss/theme/_custom.scss. \u0412\u043e\u0442 \u043a\u0443\u0434\u0430 \u043f\u043e\u0439\u0434\u0443\u0442 \u0432\u0430\u0448\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.
  5. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0444\u0430\u0439\u043b\u044b gulpfile.js \u0438package.json \u0432 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b.

\u0427\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 scss \u0434\u043b\u044f mytheme, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0442\u0435\u043c\u044b. Quark \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 gulp \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 sass, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0438 \u043f\u0440\u044f\u0436\u0430 \u0434\u043b\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 npm install -g gulp, yarn install, \u0430 \u0437\u0430\u0442\u0435\u043c gulp watch. \u0422\u0435\u043f\u0435\u0440\u044c \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u044b, \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b.

"},{"location":"themes/theme-basics/","title":"\u041e\u0441\u043d\u043e\u0432\u044b \u0442\u0435\u043c","text":""},{"location":"themes/theme-basics/#osnovy-tem","title":"\u041e\u0441\u043d\u043e\u0432\u044b \u0442\u0435\u043c","text":"

\u0422\u0435\u043c\u044b \u0432 Grav \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0438 \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043a\u0438\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0449\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig. \u041a\u0430\u0436\u0434\u0430\u044f \u0442\u0435\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 Twig (\u0441\u043c\u0435\u0441\u044c PHP-\u043a\u043e\u0434\u0430 \u0438 HTML), \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438, \u0438 CSS. \u041e\u0431\u044b\u0447\u043d\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 CSS Sass \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 CSS, \u043d\u043e \u043d\u0438\u0447\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0432\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Less, \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 CSS. \u0412\u0441\u0451 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0432\u0430\u0448\u0438\u043c \u043b\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f\u043c.

"},{"location":"themes/theme-basics/#stranitsy-kontenta-i-shablony-twig","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u044b Twig","text":"

\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u2014 \u044d\u0442\u043e \u043f\u0440\u044f\u043c\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0432 Grav \u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0442\u0435\u043c\u0435.

\u041a\u0430\u0436\u0434\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u0430\u044f \u0432\u0430\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043b\u0438\u0431\u043e \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043b\u0438\u0431\u043e \u043f\u0443\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0414\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043c\u044b \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u043c \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430.

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440. \u0415\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 Grav Base, \u0432\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u0432 \u043f\u0430\u043f\u043a\u0435 user/pages/01.home \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c default.md, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435. \u0418\u043c\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0442. \u0435. default \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 Grav, \u0447\u0442\u043e \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c default.html.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 templates/ \u0442\u0435\u043c\u044b.

\u0418\u043c\u0435\u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u00abdefault\u00bb, \u00abblog\u00bb \u0438 \u0442. \u0434.

\u0415\u0441\u043b\u0438 \u0431\u044b \u0443 \u0432\u0430\u0441 \u0431\u044b\u043b \u0444\u0430\u0439\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c blog.md, Grav \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0430\u0441\u044c \u0431\u044b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig: <your_theme>/templates/blog.html.twig.

\u0418\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 Grav \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 Grav. \u0422\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u0435\u043d\u0430 \u043f\u0430\u043f\u043e\u043a. \u041d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0431\u043b\u043e\u0433\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430. \u042d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.

"},{"location":"themes/theme-basics/#organizatsiia-temy","title":"\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u043c\u044b","text":""},{"location":"themes/theme-basics/#opredelenie-i-konfiguratsiia","title":"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"

\u041a\u0430\u0436\u0434\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c blueprints.yaml, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043c\u0435. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f form \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0446\u0438\u0439 \u0442\u0435\u043c\u044b. \u0422\u0435\u043c\u0430 Antimatter \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b blueprints.yaml:

name: Antimatter\nslug: antimatter\ntype: theme\nversion: 1.6.7\ndescription: 'Antimatter is the default theme included with **Grav**'\nicon: empire\nauthor:\n  name: Team Grav\n  email: devs@getgrav.org\n  url: https://getgrav.org\nhomepage: https://github.com/getgrav/grav-theme-antimatter\ndemo: https://demo.getgrav.org/blog-skeleton\nkeywords: antimatter, theme, core, modern, fast, responsive, html5, css3\nbugs: https://github.com/getgrav/grav-theme-antimatter/issues\nlicense: MIT\n\ndependencies:\n  - { name: grav, version: '>=1.6.0' }\n\nform:\n  validation: loose\n  fields:\n    dropdown.enabled:\n      type: toggle\n      label: Dropdown in navbar\n      highlight: 1\n      default: 1\n      options:\n        1: Enabled\n        0: Disabled\n      validate:\n        type: bool\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u043c\u044b, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0435 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c your_theme.yaml. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

enabled: true\ncolor: blue\n

\u041e\u043f\u0446\u0438\u044f color: blue \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442. \u041e\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0433\u043b\u0430\u0432\u0435 \u0424\u043e\u0440\u043c\u044b. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 300px x 300px \u0438 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e thumbnail.jpg \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0435\u043c\u044b. \u041e\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0442\u0435\u043c \u0432 \u0432\u0430\u0448\u0435\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.

"},{"location":"themes/theme-basics/#shablony","title":"\u0428\u0430\u0431\u043b\u043e\u043d\u044b","text":"

\u041d\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0442\u0435\u043c\u044b Grav, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043f\u0430\u043f\u043a\u0435 templates/ \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 Twig-\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435.

\u0418\u0437-\u0437\u0430 \u0442\u0430\u043a\u043e\u0439 \u0442\u0435\u0441\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 Twig \u0432 \u0442\u0435\u043c\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u0435\u043c\u044b \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0425\u043e\u0440\u043e\u0448\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0435\u043c general \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u0438\u043f\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 Skeleton, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430: default, blog, error, item \u0438 modular.

\u0412\u043e\u043e\u0431\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043a\u043e\u0440\u0435\u043d\u044c \u043f\u0430\u043f\u043a\u0438 templates/ \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430 partials/ \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u0435\u0439, \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 chunks.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u0435, \u0432\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c modular/ \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043d\u0435\u0439 \u0432\u0430\u0448\u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig.

\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0444\u043e\u0440\u043c \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c forms/ \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0432 \u043d\u0435\u0439 \u043b\u044e\u0431\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0444\u043e\u0440\u043c.

"},{"location":"themes/theme-basics/#scss-less-css","title":"SCSS / LESS / CSS","text":"

\u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e, \u043d\u043e \u0441\u043e\u043b\u0438\u0434\u043d\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c scss/, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441 Sass, \u0438\u043b\u0438 less/, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 Less \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 css/ \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 CSS-\u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u043f\u0430\u043f\u043a\u0443 css-compiled/ \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 \u0432\u0430\u0448\u0438\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0439 Sass \u0438\u043b\u0438 Less.

\u041a\u0430\u043a \u0432\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442\u0435 \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b \u0437\u0434\u0435\u0441\u044c, \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0430\u0441. \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0432 \u0442\u0435\u043c\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0432 Grav 1.6.x) antimatter, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0441 \u043f\u0430\u043a\u0435\u0442\u043e\u043c Grav Base \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0434\u0435\u0439. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 Sass scss, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 CSS, \u0438, \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f.

\u0427\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Sass \u043d\u0430 \u0441\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c \u043d\u0430 sass-lang.com.

  1. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 scss shell, \u043d\u0430\u0431\u0440\u0430\u0432 ./scss.sh \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0442\u0435\u043c\u044b.
  2. \u041b\u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e: scss --source-map --watch scss:css-compiled, \u0447\u0442\u043e \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u044d\u0442\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0432\u0430\u0448\u0438 scss-\u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0443 css-compiled/. \u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 CSS \u0432 \u0441\u0432\u043e\u0435\u0439 \u0442\u0435\u043c\u0435.

"},{"location":"themes/theme-basics/#chertezhi","title":"\u0427\u0435\u0440\u0442\u0435\u0436\u0438","text":"

\u041f\u0430\u043f\u043a\u0430 blueprints/ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043e\u043f\u0446\u0438\u0439 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u041e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438. \u0422\u0435\u043c\u0430 \u043d\u0430 100% \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430 \u0431\u0435\u0437 \u043d\u0438\u0445, \u043d\u043e \u043e\u043d\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b.

"},{"location":"themes/theme-basics/#sobytiia-tem-i-plaginov","title":"\u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0442\u0435\u043c \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432","text":"

\u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u043c\u043e\u0449\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u043c\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 Grav \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u041a\u043e\u0440\u043e\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Grav \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0447\u0435\u043a, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u00ab\u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c\u00bb \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u044f\u0440\u043b\u044b\u043a\u043e\u0432 \u043f\u0443\u0442\u0435\u0439 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u0435 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Twig, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0432\u0430\u0448\u0438\u0445 Twig \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445. \u0413\u043b\u0430\u0432\u0430 \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0445\u0443\u043a\u0430\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0445\u0443\u043a\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c mytheme.php \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442:

<?php\n\nnamespace Grav\\Theme;\n\nuse Grav\\Common\\Theme;\n\nclass MyTheme extends Theme\n{\n\n    public static function getSubscribedEvents()\n    {\n        return [\n            'onThemeInitialized' => ['onThemeInitialized', 0]\n        ];\n    }\n\n    public function onThemeInitialized()\n    {\n        if ($this->isAdmin()) {\n            $this->active = false;\n            return;\n        }\n\n        $this->enable([\n            'onTwigSiteVariables' => ['onTwigSiteVariables', 0]\n        ]);\n    }\n\n    public function onTwigSiteVariables()\n    {\n        $this->grav['assets']\n            ->addCss('plugin://css/mytheme-core.css')\n            ->addCss('plugin://css/mytheme-custom.css');\n\n        $this->grav['assets']\n            ->add('jquery', 101)\n            ->addJs('theme://js/jquery.myscript.min.js');\n    }\n}\n

\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u0443\u043a\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0432\u0430\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 getSubscribeEvents, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0445 \u0441\u0432\u043e\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435 \u0435\u0433\u043e \u0442\u0430\u043a\u0436\u0435. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0443.

"},{"location":"themes/theme-basics/#drugie-papki","title":"\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u043f\u043a\u0438","text":"

\u041c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b \u0434\u043b\u044f images/, fonts/ \u0438 js/, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0432\u0435\u0431-\u0448\u0440\u0438\u0444\u0442\u044b \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0444\u0430\u0439\u043b\u044b JavaScript.

"},{"location":"themes/theme-basics/#primer-temy","title":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0435\u043c\u044b","text":"

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0435\u043c\u0443 Antimatter \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u041d\u0438\u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u044b:

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b css, css-compiled, fonts, images, js, scss \u0438 templates \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438. \u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0442\u0435\u043c\u044b.

"},{"location":"themes/theme-configuration/","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0442\u0435\u043c\u044b","text":""},{"location":"themes/theme-configuration/#konfiguratsiia-temy","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0442\u0435\u043c\u044b","text":"

\u0412 Grav \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0442\u0435\u043c \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430\u0445 \u0438\u0437 \u0432\u0430\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 Twig \u0438 PHP.

"},{"location":"themes/theme-configuration/#dostup-k-informatsii-o-chertezhe-temy","title":"\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0435 \u0442\u0435\u043c\u044b","text":"

\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 blueprints.yaml \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0442\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 theme. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b blueprints.yaml:

name: Antimatter\nslug: antimatter\ntype: theme\nversion: 1.7.0\ndescription: \"Antimatter is the default theme included with **Grav**\"\nicon: empire\nauthor:\n  name: Team Grav\n  email: devs@getgrav.org\n  url: https://getgrav.org\nhomepage: https://github.com/getgrav/grav-theme-antimatter\ndemo: http://demo.getgrav.org/blog-skeleton\nkeywords: antimatter, theme, core, modern, fast, responsive, html5, css3\nbugs: https://github.com/getgrav/grav-theme-antimatter/issues\nlicense: MIT\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043b\u044e\u0431\u043e\u043c\u0443 \u0438\u0437 \u044d\u0442\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 theme, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 dot-\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:

Author Email: {{ theme.author.email }}\nTheme License: {{ theme.license }}\n

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u0442\u0438 \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Grav \u0441 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c PHP:

<?php\n\n$theme_author_email = $this->grav['theme']['author']['email'];\n$theme_license = $this->grav['theme']['license'];\n
"},{"location":"themes/theme-configuration/#dostup-k-konfiguratsii-temy","title":"\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b","text":"

\u0423 \u0442\u0435\u043c\u044b \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0424\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <themename>.yaml. \u0424\u0430\u0439\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0442\u0435\u043c\u044b (user/themes/<themename>).

\u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0444\u0430\u0439\u043b YAML \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0442\u0435\u043c\u044b, \u0430 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 user/config. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u043c\u044b \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u043d\u0435\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u043c\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c \u0438/\u0438\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043d\u0438\u043c \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.

\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0435\u043c\u0443 \u0430\u043d\u0442\u0438\u043c\u0430\u0442\u0435\u0440\u0438\u0438. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0442\u0435\u043c\u044b \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c antimatter.yaml. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

enabled: true\ncolor: blue\n

\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b, \u043d\u043e \u043e\u043d \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u044d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0435.

\u0418\u0442\u0430\u043a, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435: user/config/themes/antimatter.yaml. \u0412 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:

\u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e enabled \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b, \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u044f\u0432\u043d\u043e.

color: red\ninfo: Grav is awesome!\n

\u0417\u0430\u0442\u0435\u043c \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u044b \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 grav.theme.config:

<h1 style=\"color:{{ grav.theme.config.color }}\">{{ grav.theme.config.info }}</h1>\n

\u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a:

Grav - \u044d\u0442\u043e \u043a\u0440\u0443\u0442\u043e!

\u0412 PHP \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e:

<?php\n\n$color = $this->grav['theme']->config()['color'];\n$info = $this->grav['theme']->config()['info'];\n

\u041f\u0440\u043e\u0441\u0442\u043e! \u041d\u0435\u0442 \u043f\u0440\u0435\u0434\u0435\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0438\u0445 \u0442\u0435\u043c. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0443\u0433\u043e\u0434\u043d\u043e! :)

"},{"location":"themes/theme-configuration/#alternativnaia-notatsiia","title":"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043d\u043e\u0442\u0430\u0446\u0438\u044f","text":"

\u0422\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u044b:

\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c 1\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c 2\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c 3
{{ config.theme.color_option }}\n
{{ theme_var(color_option) }}\n
{{ grav.themes.antimatter.color_option }} [\u0418\u0417\u0411\u0415\u0413\u0410\u0419\u0422\u0415!]\n

\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e grav.themes.<themename> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0438\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u044d\u0442\u043e\u0433\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043c\u044b.

"},{"location":"themes/theme-tutorial/","title":"\u0423\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u0442\u0435\u043c\u0430\u043c","text":""},{"location":"themes/theme-tutorial/#uchebnik-po-temam","title":"\u0423\u0447\u0435\u0431\u043d\u0438\u043a \u043f\u043e \u0442\u0435\u043c\u0430\u043c","text":"

\u0427\u0430\u0441\u0442\u043e \u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0437\u043d\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u2014 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0435 \u0438\u0437 \u043d\u0435\u0433\u043e. \u041c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b Grav.

"},{"location":"themes/theme-tutorial/#quark","title":"Quark","text":"

Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0447\u0438\u0441\u0442\u043e\u0439 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u043e\u0439 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c Quark, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Spectre.css.

Spectre.css \u2014 \u043b\u0451\u0433\u043a\u0438\u0439, \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u0439 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 CSS-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.

Spectre \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u0434\u043b\u044f \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0433\u0438\u0431\u043a\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438, \u0447\u0438\u0441\u0442\u044b\u0435 CSS-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0441 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.

\u041e\u0434\u043d\u0430\u043a\u043e, \u0447\u0430\u0441\u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441 \u0447\u0435\u0433\u043e-\u0442\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e.

"},{"location":"themes/theme-tutorial/#pure-css","title":"Pure.css","text":"

\u0420\u0430\u0434\u0438 \u044d\u0442\u043e\u0433\u043e \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0442\u0435\u043c\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0443\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Pure.css, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 Yahoo!

Pure \u2014 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u0439 CSS-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0441\u043d\u043e\u0432\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0431\u0435\u0437 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043a\u0430\u043a \u0443 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Bootstrap \u0438\u043b\u0438 Foundation. \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u043d\u043e \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 4 \u041a\u0431 \u0432 \u0441\u0436\u0430\u0442\u043e\u043c \u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435!

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 Pure \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Pure.css.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e Important Theme Updates \u0432 \u0431\u043b\u043e\u0433\u0435 Grav, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 Grav-\u0442\u0435\u043c\u0430\u0445, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043b\u0443\u0447\u0448\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.

"},{"location":"themes/theme-tutorial/#shag-1-ustanovka-plagina-devtools","title":"\u0428\u0430\u0433 1 - \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 DevTools","text":"

\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0412\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043d\u0430\u0448\u0435\u043c\u0443 \u043d\u043e\u0432\u043e\u043c\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0443 DevTools.

\u041f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 DevTools. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438.

"},{"location":"themes/theme-tutorial/#ustanovka-cherez-konsolnoe-prilozhenie-gpm","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 GPM","text":"
  • \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:
bin/gpm install devtools\n
"},{"location":"themes/theme-tutorial/#ustanovka-cherez-plagin-admin","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d Admin","text":"
  • \u041f\u043e\u0441\u043b\u0435 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0432 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438.
  • \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443.
  • \u041d\u0430\u0439\u0434\u0438\u0442\u0435 DevTools \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c.
"},{"location":"themes/theme-tutorial/#shag-2-sozdanie-bazovoi-temy","title":"\u0428\u0430\u0433 2 - \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b","text":"

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0448\u0430\u0433\u0430 \u0432\u0430\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0442\u0430\u043a \u043a\u0430\u043a DevTools \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u0440\u0443 CLI-\u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435!

\u0418\u0437 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 (\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Open Server \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c php \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b):

bin/plugin devtools new-theme\n

\u0412 \u0445\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b:

\u041c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c pure-blank \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043c\u044b.

bin/plugin devtools new-theme\n\nEnter Theme Name: MyTheme\nEnter Theme Description: My New Theme\nEnter Developer Name: Acme Corp\nEnter Developer Email: contact@acme.co\nPlease choose a template type\n  [pure-blank ] Basic Theme using Pure.css\n  [inheritance] Inherit from another theme\n  [copy       ] Copy another theme\n > pure-blank\n\nSUCCESS theme mytheme -> Created Successfully\n\nPath: /www/user/themes/my-theme\n

DevTools \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0433\u0434\u0435 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u044d\u0442\u043e\u0442 \u043d\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d. \u0421\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d, \u043d\u043e \u0432 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442. \u0412\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u0430\u0448\u0438\u043c\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438.

\u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0430\u0448\u0443 \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0435\u043c\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441 quark \u043d\u0430 my-theme, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0432\u0430\u0448 user/config/system.yaml \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:

---\npages:\n  theme: my-theme\n

\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0438 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435, \u0447\u0442\u043e \u0442\u0435\u043c\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c.

"},{"location":"themes/theme-tutorial/#shag-3-osnovy-temy","title":"\u0428\u0430\u0433 3 - \u041e\u0441\u043d\u043e\u0432\u044b \u0442\u0435\u043c\u044b","text":"

\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0435\u0451 \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 user/themes/my-theme, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435:

.\n\u251c\u2500\u2500 CHANGELOG.md\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 blueprints.yaml\n\u251c\u2500\u2500 css\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 custom.css\n\u251c\u2500\u2500 fonts\n\u251c\u2500\u2500 images\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 logo.png\n\u251c\u2500\u2500 js\n\u251c\u2500\u2500 my-theme.php\n\u251c\u2500\u2500 my-theme.yaml\n\u251c\u2500\u2500 screenshot.jpg\n\u251c\u2500\u2500 templates\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 default.html.twig\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 error.html.twig\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 partials\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 base.html.twig\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 navigation.html.twig\n\u2514\u2500\u2500 thumbnail.jpg\n

\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0435\u0439.

"},{"location":"themes/theme-tutorial/#neobkhodimye-elementy-dlia-raboty","title":"\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b","text":"

\u042d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0438\u043c\u0435\u044e\u0442 \u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0438 \u0432\u0430\u0448\u0430 \u0442\u0435\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0438\u0445 \u0432 \u0441\u0432\u043e\u044e \u0442\u0435\u043c\u0443.

blueprints.yaml - \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 Grav \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u0435. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0443, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u0443\u044e \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0442\u0435\u043c\u044b. \u042d\u0442\u0430 \u0444\u043e\u0440\u043c\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u0430\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u043c\u044b. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0433\u043b\u0430\u0432\u0435 \u0424\u043e\u0440\u043c\u044b.

  • my-theme.php - \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u0430\u0448\u0435\u0439 \u0442\u0435\u043c\u043e\u0439, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0439 \u043d\u0443\u0436\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0445\u0443\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c onPluginsInitialized(), \u043e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u0445\u0443\u043a onThemeInitialized(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b.
  • my-theme.yaml - \u044d\u0442\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043e\u043f\u0446\u0438\u0439 \u0442\u0435\u043c\u044b.
  • templates/ - \u044d\u0442\u043e \u043f\u0430\u043f\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b Twig \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.
"},{"location":"themes/theme-tutorial/#trebuemye-elementy-dlia-vypuska","title":"\u0422\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0432\u044b\u043f\u0443\u0441\u043a\u0430","text":"

\u042d\u0442\u0438 \u043f\u0443\u043d\u043a\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0442\u0435\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 GPM.

  • CHANGELOG.md - \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 Grav \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0440\u0435\u043b\u0438\u0437\u0430\u0445.
  • LICENSE - \u0444\u0430\u0439\u043b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e MIT, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u0447\u0435\u043c-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u043c.
  • README.md - \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u044e\u0431\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u0442\u0435\u043c\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.
  • screenshot.jpg - \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0442\u0435\u043c\u044b, \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 1009px x 1009px.
  • thumbnail.jpg - \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0442\u0435\u043c\u044b, \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 300px x 300px.
"},{"location":"themes/theme-tutorial/#shag-4-bazovyi-shablon","title":"\u0428\u0430\u0433 4 - \u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d","text":"

\u041a\u0430\u043a \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u044b, \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 Grav \u0438\u043c\u0435\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 default.md, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Grav \u0438\u0441\u043a\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d Twig \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c default.html.twig. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u044d\u0442\u043e\u043c \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u0438 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0435\u0433 Twig Extends, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043c\u0430\u043a\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u044e\u0431\u043e\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u0443 Twig \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0431\u0430\u0437\u0435. \u0418\u0442\u0430\u043a, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u0444\u0430\u0439\u043b templates/default.html.twig \u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u0435 \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:

{% extends 'partials/base.html.twig' %}\n\n{% block content %}\n    {{ page.content }}\n{% endblock %}\n

\u0412 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0434\u0432\u0435 \u0432\u0435\u0449\u0438.

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 partials/base.html.twig.

\u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c templates/ \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u044b Twig, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Twig \u0443\u0436\u0435 \u0438\u0449\u0435\u0442 templates/ \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430.

\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0431\u043b\u043e\u043a content \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e.

\u0414\u043b\u044f \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 templates/partials \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043b\u0438\u0431\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b HTML, \u043b\u0438\u0431\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c\u0438. \u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c templates/modular \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0438 templates/forms \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0444\u043e\u0440\u043c. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443.

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 templates/partials/base.html.twig, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c HTML-\u043c\u0430\u043a\u0435\u0442\u0430:

{% set theme_config = attribute(config.themes, config.system.pages.theme) %}\n<!DOCTYPE html>\n<html lang=\"{{ grav.language.getActive ?: theme_config.default_lang }}\">\n<head>\n{% block head %}\n    <meta charset=\"utf-8\" />\n    <title>{% if header.title %}{{ header.title|e('html') }} | {% endif %}{{ site.title|e('html') }}</title>\n\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    {% include 'partials/metadata.html.twig' %}\n\n    <link rel=\"icon\" type=\"image/png\" href=\"{{ url('theme://images/logo.png') }}\" />\n    <link rel=\"canonical\" href=\"{{ page.url(true, true) }}\" />\n{% endblock head %}\n\n{% block stylesheets %}\n    {% do assets.addCss('https://unpkg.com/purecss@1.0.0/build/pure-min.css', 100) %}\n    {% do assets.addCss('https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css', 99) %}\n    {% do assets.addCss('theme://css/custom.css', 98) %}\n{% endblock %}\n\n{% block javascripts %}\n    {% do assets.addJs('jquery', 100) %}\n{% endblock %}\n\n{% block assets deferred %}\n    {{ assets.css()|raw }}\n    {{ assets.js()|raw }}\n{% endblock %}\n\n</head>\n<body id=\"top\" class=\"{{ page.header.body_classes }}\">\n\n{% block header %}\n    <div class=\"header\">\n        <div class=\"wrapper padding\">\n            <a class=\"logo left\" href=\"{{ base_url == '' ? '/' : base_url }}\">\n                <i class=\"fa fa-rebel\"></i>\n                {{ config.site.title }}\n            </a>\n            {% block header_navigation %}\n            <nav class=\"main-nav\">\n                {% include 'partials/navigation.html.twig' %}\n            </nav>\n            {% endblock %}\n        </div>\n    </div>\n{% endblock %}\n\n{% block body %}\n    <section id=\"body\">\n        <div class=\"wrapper padding\">\n        {% block content %}{% endblock %}\n        </div>\n    </section>\n{% endblock %}\n\n{% block footer %}\n    <div class=\"footer text-center\">\n        <div class=\"wrapper padding\">\n            <p><a href=\"https://getgrav.org\">Grav</a> was <i class=\"fa fa-code\"></i> with <i class=\"fa fa-heart\"></i> by <a href=\"https://www.rockettheme.com\">RocketTheme</a>.</p>\n        </div>\n    </div>\n{% endblock %}\n\n{% block bottom %}\n    {{ assets.js('bottom')|raw }}\n{% endblock %}\n\n</body>\n

\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 HTML, \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0438\u043b\u044c\u0442\u0440 |raw, \u0447\u0442\u043e\u0431\u044b \u0448\u0430\u0431\u043b\u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c (autoescape).

\u041e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 autoescape \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0441\u0430\u0439\u0442 \u043e\u0442 XSS-\u0430\u0442\u0430\u043a.

"},{"location":"themes/theme-tutorial/#shag-5-pogruzhenie-v-detali","title":"\u0428\u0430\u0433 5 - \u041f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0432 \u0434\u0435\u0442\u0430\u043b\u0438","text":"

\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043a\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b\u0435 base.html.twig, \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c:

  1. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f theme_config \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0442\u0435\u043c\u044b. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e Twig \u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0442\u0438\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441 \u0442\u0438\u0440\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 config.themes.my-theme), \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Twig-\u0444\u0443\u043d\u043a\u0446\u0438\u044e attribute() \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 my-theme \u0438\u0437 config.themes.

  2. \u042d\u043b\u0435\u043c\u0435\u043d\u0442 <html lang=... \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 Grav, \u0435\u0441\u043b\u0438 \u043e\u043d \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0438\u043d\u0430\u0447\u0435 \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 default_lang, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 theme_config.

  3. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 '{% block head %}{% endblock head %}' \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 head \u0432 \u0442\u0435\u0433\u0435 {% endblock head %} \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0442\u0435\u043d\u0438\u044f. \u0412 \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u043c\u044b \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 HTML-\u0442\u0435\u0433\u0435 <head>.

  4. \u0422\u0435\u0433 <title> \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 title \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0444\u0430\u0439\u043b\u0430. header.title - \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043d\u043e \u043e\u043d \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d page.header.title.

  5. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0430\u0440\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043c\u0435\u0442\u0430\u0442\u0435\u0433\u043e\u0432 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f partials/metadata.html.twig. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0446\u0438\u043a\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 site.yaml \u0438 \u043b\u044e\u0431\u044b\u0445 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

  6. \u0417\u0430\u043f\u0438\u0441\u044c <link rel=\"icon\"... \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0435\u0435 \u043e\u0442 \u0442\u0435\u043c\u044b. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0442\u0435\u043c \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c images/logo.png. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e - {{url ('theme: //images/logo.png')}}.

  7. \u0417\u0430\u043f\u0438\u0441\u044c <link rel=\"canonical\"... \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0447\u0435\u0440\u0435\u0437 {{ page.url(true, true) }}.

  8. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0431\u043b\u043e\u043a \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c stylesheets, \u0438 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043a\u0430\u0440\u043a\u0430\u0441 Pure.css. \u0412\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 FontAwesome \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043a\u043e\u043d\u043e\u043a. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0444\u0430\u0439\u043b custom.css \u0432 \u043f\u0430\u043f\u043a\u0435 \u0442\u0435\u043c\u044b css/. \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0442\u0438\u043b\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0447\u0430\u0442\u044c, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0434\u0435\u0441\u044c. \u0422\u0430\u043a\u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 CSS-\u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.

  9. \u0412\u044b\u0437\u043e\u0432 {{ assets.css()|raw }} - \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0442\u0435\u0433\u043e\u0432 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 CSS.

  10. \u0411\u043b\u043e\u043a javascripts, \u043a\u0430\u043a \u0438 \u0431\u043b\u043e\u043a stylesheets - \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 JavaScript-\u0444\u0430\u0439\u043b\u043e\u0432. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 jquery, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 Grav, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u043d\u0435\u0439.

  11. {{ assets.js()|raw }}\u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0432\u0441\u0435 \u0442\u0435\u0433\u0438 JavaScript.

  12. \u0422\u044d\u0433 <body> \u0438\u043c\u0435\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 body_classes \u0444\u0440\u043e\u043d\u0442\u043c\u0430\u0442\u0442\u0435\u0440\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

  13. \u0412 \u0431\u043b\u043e\u043a\u0435 header \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044f\u0442 HTML-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043b\u043e\u0433\u043e\u0442\u0438\u043f \u0438\u043c\u0435\u0435\u0442 \u0433\u0438\u043f\u0435\u0440\u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 base_url \u0441 \u043b\u043e\u0433\u0438\u043a\u043e\u0439:{{base_url == '? '/': base_url}}. \u042d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0441\u0441\u044b\u043b\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e /.

  14. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u0430 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441 {{config.site.title}}, \u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0442\u0435\u0433\u043e\u043c <img> \u043d\u0430 \u043b\u043e\u0433\u043e\u0442\u0438\u043f, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435.

  15. \u0422\u0435\u0433 <nav> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 partials/navigation.HTML.twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u043b\u044f \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u043b\u044e\u0431\u044b\u0445 \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0445 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0435\u043d\u044e. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b. \u0417\u0430\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u0432 \u044d\u0442\u043e\u0442 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044e.

  16. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 {% block content%} {% endblock%} \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0435\u0433\u043e \u044d\u0442\u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u044d\u0442\u043e \u0432 default.html.twig \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

  17. \u0411\u043b\u043e\u043a footer \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043d\u0438\u0436\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434.

  18. \u041f\u043e\u0434\u043e\u0431\u043d\u043e \u0431\u043b\u043e\u043a\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, {% block bottom%} {% endblock%} \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043a\u043e\u0434\u043e\u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 JavaScript \u0438\u043b\u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u0434\u043e\u0432. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u0434 JavaScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 bottom. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432.

"},{"location":"themes/theme-tutorial/#shag-6-css-faily-temy","title":"\u0428\u0430\u0433 6 - CSS-\u0444\u0430\u0439\u043b\u044b \u0442\u0435\u043c\u044b","text":"

\u0412\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 partials/base.html.twig \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u0442\u0435\u043c\u0443 CSS \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432: do assets.add('theme://css/custom.css', 98). \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 CSS, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432, \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 Pure.css. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Pure - \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0430\u043c\u043e\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435, \u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u0442\u0438\u043b\u0435\u0439.

  1. \u0412 \u043f\u0430\u043f\u043a\u0435 user/themes/my-theme/css \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b custom.css:
/* Core Styles */\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\nbody {\n  font-size: 1rem;\n  line-height: 1.7;\n  color: #606d6e;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  color: #454b4d;\n}\n\na {\n  color: #1f8cd6;\n  text-decoration: none;\n}\n\na:hover {\n  color: #175e91;\n}\n\npre {\n  background: #f0f0f0;\n  margin: 1rem 0;\n  border-radius: 2px;\n}\n\nblockquote {\n  border-left: 10px solid #eee;\n  margin: 0;\n  padding: 0 2rem;\n}\n\n/* Utility Classes */\n.wrapper {\n  margin: 0 3rem;\n}\n\n.padding {\n  padding: 3rem 1rem;\n}\n\n.left {\n  float: left;\n}\n\n.right {\n  float: right;\n}\n\n.text-center {\n  text-align: center;\n}\n\n.text-right {\n  text-align: right;\n}\n\n.text-left {\n  text-align: left;\n}\n\n/* Content Styling */\n.header .padding {\n  padding: 1rem 0;\n}\n\n.header {\n  background-color: #1f8dd6;\n  color: #eee;\n}\n\n.header a {\n  color: #fff;\n}\n\n.header .logo {\n  font-size: 1.7rem;\n  text-transform: uppercase;\n}\n\n.footer {\n  background-color: #eee;\n}\n\n/* Menu Settings */\n.main-nav ul {\n  text-align: center;\n  letter-spacing: -1em;\n  margin: 0;\n  padding: 0;\n}\n\n.main-nav ul li {\n  display: inline-block;\n  letter-spacing: normal;\n}\n\n.main-nav ul li a {\n  position: relative;\n  display: block;\n  line-height: 45px;\n  color: #fff;\n  padding: 0 20px;\n  white-space: nowrap;\n}\n\n.main-nav > ul > li > a {\n  border-radius: 2px;\n}\n\n/*Active dropdown nav item */\n.main-nav ul li:hover > a {\n  background-color: #175e91;\n}\n\n/* Selected Dropdown nav item */\n.main-nav ul li.selected > a {\n  background-color: #fff;\n  color: #175e91;\n}\n\n/* Dropdown CSS */\n.main-nav ul li {\n  position: relative;\n}\n\n.main-nav ul li ul {\n  position: absolute;\n  background-color: #1f8dd6;\n  min-width: 100%;\n  text-align: left;\n  z-index: 999;\n\n  display: none;\n}\n.main-nav ul li ul li {\n  display: block;\n}\n\n/* Dropdown CSS */\n.main-nav ul li ul ul {\n  left: 100%;\n  top: 0;\n}\n\n/* Active on Hover */\n.main-nav li:hover > ul {\n  display: block;\n}\n\n/* Child Indicator */\n.main-nav .has-children > a {\n  padding-right: 30px;\n}\n.main-nav .has-children > a:after {\n  font-family: FontAwesome;\n  content: '\\f107';\n  position: absolute;\n  display: inline-block;\n  right: 8px;\n  top: 0;\n}\n\n.main-nav .has-children .has-children > a:after {\n  content: '\\f105';\n}\n

\u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 CSS-\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u0448\u0440\u0438\u0444\u0442\u044b, \u0446\u0432\u0435\u0442\u0430 \u0438 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b. \u0414\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043c\u0435\u043d\u044e \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438. \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b CSS (\u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u0431\u043b\u043e\u043a\u0435 head, \u0441\u043b\u0435\u0434\u0443\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0441 custom.css).

"},{"location":"themes/theme-tutorial/#shag-7-testirovanie","title":"\u0428\u0430\u0433 7 - \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","text":"

\u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0432\u043e\u044e \u0442\u0435\u043c\u0443 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432 \u043d\u0435\u043c \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 Grav. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e:

\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u0435\u043c, \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0442\u0435\u043c\u0443!

"},{"location":"themes/theme-vars/","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u043c\u044b","text":""},{"location":"themes/theme-vars/#peremennye-temy","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u043c\u044b","text":"

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0442\u0435\u043c\u0443, Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u0442\u0438\u043f\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0437 \u0432\u0430\u0448\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig. \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043e\u0449\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u0442\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438. \u042d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u043e \u0432 \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u043e \u0432 \u043d\u0430\u0448\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.

\u0412 Twig \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b, \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u0438 \u043e\u043f\u0443\u0441\u043a\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0438 (). \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u0441\u043b\u0435 \u0438\u043c\u0435\u043d\u0438 \u043c\u0435\u0442\u043e\u0434\u0430. \u0412\u044b\u0437\u043e\u0432 page.content \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d \u0432\u044b\u0437\u043e\u0432\u0443 page.content().

"},{"location":"themes/theme-vars/#kliuchevye-obekty","title":"\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b","text":"

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.

"},{"location":"themes/theme-vars/#peremennaia-base-dir","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f base_dir","text":"

{{ base_dir }} \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav.

"},{"location":"themes/theme-vars/#peremennaia-base-url","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f base_url","text":"

{{ base_url }} \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URL \u0441\u0430\u0439\u0442\u0430, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 absolute_urls (\u043e\u043f\u0446\u0438\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438).

"},{"location":"themes/theme-vars/#peremennaia-base-url-relative","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f base_url_relative","text":"

{{ base_url_relative }} \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u0430\u0439\u0442\u0430, \u0431\u0435\u0437 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0445\u043e\u0441\u0442\u0435.

"},{"location":"themes/theme-vars/#peremennaia-base-url-absolute","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f base_url_absolute","text":"

{{ base_url_absolute}} \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u0430\u0439\u0442\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0445\u043e\u0441\u0442\u0435.

"},{"location":"themes/theme-vars/#peremennaia-base-url-simple","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f base_url_simple","text":"

{{ base_url_simple }} \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URL \u0441\u0430\u0439\u0442\u0430, \u0431\u0435\u0437 \u043a\u043e\u0434\u0430 \u044f\u0437\u044b\u043a\u0430.

"},{"location":"themes/theme-vars/#peremennaia-home-url","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f home_url","text":"

{{ home_url }} \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u042d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 base_url, \u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u043f\u0443\u0441\u0442.

"},{"location":"themes/theme-vars/#peremennaia-html-lang","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f html_lang","text":"

\u042d\u0442\u043e \u0432\u0435\u0440\u043d\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u0435\u0441\u043b\u0438 \u043e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d, \u0438\u043d\u0430\u0447\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u043f\u0446\u0438\u044e site.default_lang, \u0438\u043d\u0430\u0447\u0435 \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043a en.

"},{"location":"themes/theme-vars/#peremennaia-theme-dir","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f theme_dir","text":"

{{ theme_dir }} \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0430\u043f\u043a\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u044b.

"},{"location":"themes/theme-vars/#peremennaia-theme-url","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f theme_url","text":"

{{ theme_url }} \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0435\u043c\u0435.

\u041f\u0440\u0438 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u043c\u0438, \u043a\u0430\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 JavaScript \u0438 CSS \u0444\u0430\u0439\u043b\u044b, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e url() \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u043f\u043e\u0442\u043e\u043a\u043e\u043c theme://, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0424\u0438\u043b\u044c\u0442\u0440\u044b \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Twig. \u0414\u043b\u044f JavaScript \u0438 CSS \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0435\u0449\u0451 \u043f\u0440\u043e\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u043e\u043d\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.

"},{"location":"themes/theme-vars/#peremennaia-html-lang_1","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f html_lang","text":"

{{ html_lang }} \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a.

"},{"location":"themes/theme-vars/#peremennaia-language-codes","title":"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f language_codes","text":"

{{ language_codes }} \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0441\u0430\u0439\u0442\u0430.

"},{"location":"themes/theme-vars/#obekt-assets","title":"\u041e\u0431\u044a\u0435\u043a\u0442 assets","text":"

\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f CSS \u0438 JavaScript \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435.

{% do assets.addCss('theme://css/foo.css') %}\n{% do assets.addInlineCss('a { color: red; }') %}\n{% do assets.addJs('theme://js/something.js') %}\n{% do assets.addInlineJs('alert(\"Warming!\");') %}\n

\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432.

\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0433 style \u0438 \u0442\u0435\u0433 script.

"},{"location":"themes/theme-vars/#obekt-config","title":"\u041e\u0431\u044a\u0435\u043a\u0442 config","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043b\u044e\u0431\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Grav, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 YAML-\u0444\u0430\u0439\u043b\u0430\u0445 \u0432 /user/config, \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044a\u0435\u043a\u0442 config. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

{{ config.system.pages.theme }}{# \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443 #}\n
"},{"location":"themes/theme-vars/#obekt-site","title":"\u041e\u0431\u044a\u0435\u043a\u0442 site","text":"

\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430 config.site. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432 \u0444\u0430\u0439\u043b\u0435 site.yaml.

"},{"location":"themes/theme-vars/#obekt-system","title":"\u041e\u0431\u044a\u0435\u043a\u0442 system","text":"

\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430 config.system. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 system.yaml.

"},{"location":"themes/theme-vars/#obekt-theme","title":"\u041e\u0431\u044a\u0435\u043a\u0442 theme","text":"

\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430 config.theme. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0442\u0435\u043c\u044b. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0447\u0435\u0440\u0435\u0437 config.plugins.

"},{"location":"themes/theme-vars/#obekt-page","title":"\u041e\u0431\u044a\u0435\u043a\u0442 page","text":"

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Grav \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0432 \u043f\u0430\u043f\u043a\u0435 pages/, \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c page.

\u041e\u0431\u044a\u0435\u043a\u0442 page, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u0432\u0430\u0436\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c.

\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 page \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 API. \u0412\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.

"},{"location":"themes/theme-vars/#summary-size","title":"summary([size])","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u0441\u0435\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u043b\u0438 \u0443\u043a\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 size, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043b\u0438\u043d\u0443 \u0440\u0435\u0437\u044e\u043c\u0435, \u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e summary.size \u0432 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438\u0437 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 site.yaml.

{{ page.summary }}\n

\u0438\u043b\u0438

{{ page.summary(50) }}\n

\u0422\u0440\u0435\u0442\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 - \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c === \u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0438. \u0412\u0441\u0451, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u043c, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0438\u0437\u0435\u0440\u0430.

"},{"location":"themes/theme-vars/#content","title":"content()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0435 HTML \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

{{ page.content }}\n
"},{"location":"themes/theme-vars/#header","title":"header()","text":"

\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0432 YAML-\u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438:

title: My Page\nauthor: Joe Bloggs\n

\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:

\u0410\u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f: {{ page.header.author }}\n
"},{"location":"themes/theme-vars/#media","title":"media()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0441\u0435 \u043c\u0435\u0434\u0438\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u041a \u043d\u0438\u043c \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0432\u0438\u0434\u0435\u043e \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0430\u0439\u043b\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430-\u043c\u0435\u0442\u043e\u0434\u0430\u043c, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0433\u043b\u0430\u0432\u0435 \u041c\u0435\u0434\u0438\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Twig. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: .svg \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0444\u0430\u0439\u043b\u044b, \u0430 \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043c\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 Twig.

\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:

{% set my_pdf = page.media['myfile.pdf'] %}\n

\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:

{% set first_image = page.media.images|first %}\n

\u041f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c HTML-\u0442\u0435\u0433 \u0434\u043b\u044f \u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f:

{% for image in page.media.images %}\n   {{ image.html }}\n{% endfor %}\n
"},{"location":"themes/theme-vars/#title","title":"title()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 title \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 YAML \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

title: My Page\n
"},{"location":"themes/theme-vars/#menu","title":"menu()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 menu \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 YAML \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f title.

title: My Page\nmenu: my-page\n
"},{"location":"themes/theme-vars/#visible","title":"visible()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442, \u0432\u0438\u0434\u043d\u0430 \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u043e\u0447\u043a\u0430, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0438\u0434\u043d\u044b (01.somefolder1), \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0435\u0437 (subfolder2) \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446:

title: My Page\nvisible: true\n
"},{"location":"themes/theme-vars/#routable","title":"routable()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0439 Grav \u0438\u043b\u0438 \u043d\u0435\u0442. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u041d\u0435\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445, \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445 \u0438 \u0442.\u0434., \u043d\u043e \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446:

title: My Page\nroutable: true\n
"},{"location":"themes/theme-vars/#slug","title":"slug()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0435 \u0438\u043c\u044f, \u043a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 URL \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, my-blog-post.

"},{"location":"themes/theme-vars/#url-include-host-false","title":"url([include_host = false])","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, URL \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443:

{{ page.url }} {# \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c /my-section/my-category/my-blog-post #}\n

\u0438\u043b\u0438

{{ page.url(true) }} {# \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c http://mysite.com/my-section/my-category/my-blog-post #}\n
"},{"location":"themes/theme-vars/#permalink","title":"permalink()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 URL-\u0430\u0434\u0440\u0435\u0441 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0445\u043e\u0441\u0442\u0435. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u0430 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430.

"},{"location":"themes/theme-vars/#canonical","title":"canonical()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 URL-\u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u00ab\u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u00bb \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0438\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u043c URL-\u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b canonical:.

"},{"location":"themes/theme-vars/#route","title":"route()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"themes/theme-vars/#home","title":"home()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043a\u0430\u043a \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f. \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 system.yaml.

"},{"location":"themes/theme-vars/#root","title":"root()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0438\u043b\u0438 \u043d\u0435\u0442.

"},{"location":"themes/theme-vars/#active","title":"active()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439.

"},{"location":"themes/theme-vars/#modular","title":"modular()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0439.

"},{"location":"themes/theme-vars/#activechild","title":"activeChild()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 \u044d\u0442\u043e\u0442 URL-\u0430\u0434\u0440\u0435\u0441 URI URL-\u0430\u0434\u0440\u0435\u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0418\u043b\u0438, \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u044d\u0442\u043e URL-\u0430\u0434\u0440\u0435\u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c URL-\u0430\u0434\u0440\u0435\u0441\u0435. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0432\u0430\u0448\u0435\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438, \u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u043d\u0430\u0442\u044c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0435, \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"themes/theme-vars/#find-url","title":"find(url)","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 URL-\u0430\u0434\u0440\u0435\u0441\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430.

{% include 'modular/author-detail.html.twig' with {'page': page.find('/authors/billy-bloggs')} %}\n
"},{"location":"themes/theme-vars/#collection","title":"collection()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.

{% for child in page.collection %}\n    {% include 'partials/blog_item.html.twig' with {'page':child, 'truncate':true} %}\n{% endfor %}\n
"},{"location":"themes/theme-vars/#currentposition","title":"currentPosition()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f.

"},{"location":"themes/theme-vars/#isfirst","title":"isFirst()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0435\u0440\u0432\u044b\u043c \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f.

"},{"location":"themes/theme-vars/#islast","title":"isLast()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f.

"},{"location":"themes/theme-vars/#nextsibling","title":"nextSibling()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438.

"},{"location":"themes/theme-vars/#prevsibling","title":"prevSibling()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438.

nextSibling() \u0438 prevSibling() \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0440\u0434\u0435\u0440\u043e\u0432 \u0432 \u0441\u0442\u0435\u043a-\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435. \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0441\u0442 \u0432 \u0431\u043b\u043e\u0433\u0435 \u0438\u043c\u0435\u0435\u0442 nextSibling null, \u0430 prevSibling - \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u0431\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0441 \u0441 \u0442\u043e\u043b\u043a\u0443, \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c page.adjacentSibling(-1) \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u043c\u0435\u0441\u0442\u043e page.nextSibling(), \u0447\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u0432 \u0442\u0435\u043c\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, page.adjacentSibling(NEXT_PAGE).

"},{"location":"themes/theme-vars/#children","title":"children()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"themes/theme-vars/#orderby","title":"orderBy()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0438\u043f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f: default, title, date \u0438 folder. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"themes/theme-vars/#orderdir","title":"orderDir()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a asc \u0434\u043b\u044f \u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e, \u0442\u0430\u043a \u0438 desc \u0434\u043b\u044f \u043d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"themes/theme-vars/#ordermanual","title":"orderManual()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0440\u0443\u0447\u043d\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"themes/theme-vars/#maxcount","title":"maxCount()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043b\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u044b. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"themes/theme-vars/#children-count","title":"children.count()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"themes/theme-vars/#children-current","title":"children.current()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438.

"},{"location":"themes/theme-vars/#children-next","title":"children.next()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.

"},{"location":"themes/theme-vars/#children-prev","title":"children.prev()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.

"},{"location":"themes/theme-vars/#children-nth-position","title":"children.nth(position)","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u043e position, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043e\u0442 0 \u0434\u043e children.count() - 1 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.

"},{"location":"themes/theme-vars/#children-sort-orderby-orderdir","title":"children.sort(orderBy, orderDir)","text":"

\u041f\u0435\u0440\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 orderBy (default,title, date \u0438folder) \u0438 orderDir (asc \u0438\u043b\u0438 desc)

"},{"location":"themes/theme-vars/#parent","title":"parent()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"themes/theme-vars/#ispage","title":"isPage()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0430\u0439\u043b .md, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u043d\u0435\u0439, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u043f\u043a\u0430 \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438.

"},{"location":"themes/theme-vars/#isdir","title":"isDir()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0438\u043b\u0438 false \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043f\u043a\u043e\u0439 \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438.

"},{"location":"themes/theme-vars/#id","title":"id()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"themes/theme-vars/#modified","title":"modified()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0435\u0442\u043a\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"themes/theme-vars/#date","title":"date()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0435\u0442\u043a\u0443 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u044f\u0432\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u0435\u0442\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430.

"},{"location":"themes/theme-vars/#template","title":"template()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043c\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f .md. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, default

"},{"location":"themes/theme-vars/#filepath","title":"filePath()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, /Users/yourname/sites/grav/user/pages/01.home/default.md

"},{"location":"themes/theme-vars/#filepathclean","title":"filePathClean()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043e\u0442 \u043a\u043e\u0440\u043d\u044f \u0441\u0430\u0439\u0442\u0430 Grav. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, user/pages/01.home/default.md

"},{"location":"themes/theme-vars/#path","title":"path()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, /Users/yourname/sites/grav/user/pages/01.home

"},{"location":"themes/theme-vars/#folder","title":"folder()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 01.home

"},{"location":"themes/theme-vars/#taxonomy","title":"taxonomy()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u043a \u0442\u0435\u0433\u0438:

{% for tag in page.taxonomy.tag %}\n    <a href=\"search/tag:{{ tag }}\">{{ tag }}</a>\n{% endfor %}\n
"},{"location":"themes/theme-vars/#obekt-pages","title":"\u041e\u0431\u044a\u0435\u043a\u0442 pages","text":"

\u0412\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 pages \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 API. \u0412\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438.

\u041e\u0431\u044a\u0435\u043a\u0442 pages \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 page, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u043d\u0430\u0435\u0442 Grav. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 sitemap, \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.

"},{"location":"themes/theme-vars/#metod-children","title":"\u041c\u0435\u0442\u043e\u0434 children","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 pages. \u0422\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0434\u0435\u0440\u0435\u0432\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 Grav \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445/\u043f\u0430\u043f\u043a\u0435.

\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043c\u0435\u043d\u044e:

<ul class=\"navigation\">\n    {% for page in pages.children %}\n        {% if page.visible %}\n            <li><a href=\"{{ page.url }}\">{{ page.menu }}</a></li>\n        {% endif %}\n    {% endfor %}\n</ul>\n
"},{"location":"themes/theme-vars/#obekt-media","title":"\u041e\u0431\u044a\u0435\u043a\u0442 media","text":"

\u041f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a media, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Page, \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0442\u043e\u043a\u0438 PHP \u0438\u0437 Twig. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043c\u043e\u0439.

{{ media['user://media/bird.png'].resize(50, 50).rotate(90).html()|raw }}\n
"},{"location":"themes/theme-vars/#obekt-uri","title":"\u041e\u0431\u044a\u0435\u043a\u0442 uri","text":"

\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Uri \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 API. \u0412\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.

\u0423 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Uri \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0447\u0430\u0441\u0442\u044f\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e URI. \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e URL http://mysite.com/grav/section/category/page.json/param1:foo/param2:bar/?query1=baz&query2=qux:

"},{"location":"themes/theme-vars/#path_1","title":"path()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043f\u0443\u0442\u0438 URL-\u0430\u0434\u0440\u0435\u0441\u0430: (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.path = /section/category/page)

"},{"location":"themes/theme-vars/#paths","title":"paths()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0443\u0442\u0438: (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.paths = [section, category, page])

"},{"location":"themes/theme-vars/#route-absolute-false-domain-false","title":"route([absolute = false][, domain = false])","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043a\u0430\u043a \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 URL. (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.route(true) = http://mysite.com/grav/section/category/page \u0438\u043b\u0438 uri.route() = /section/category/page)

"},{"location":"themes/theme-vars/#params","title":"params()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0430 params: (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.params = /param1:foo/param2:bar)

"},{"location":"themes/theme-vars/#param-id","title":"param(id)","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430. (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.param('param1') = foo)

"},{"location":"themes/theme-vars/#query","title":"query()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0430 URL-\u0430\u0434\u0440\u0435\u0441\u0430: (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.query = query1=bar&query2=qux)

"},{"location":"themes/theme-vars/#query-id","title":"query(id)","text":"

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430: (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.query('query1') = bar)

"},{"location":"themes/theme-vars/#url-include-host-true","title":"url([include_host = true])","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0441 \u0445\u043e\u0441\u0442\u043e\u043c \u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e. (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.url(false) = grav/section/category/page/param:foo?query=bar)

"},{"location":"themes/theme-vars/#extension","title":"extension()","text":"

\u042d\u0442\u043e \u0432\u0435\u0440\u043d\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0432\u0435\u0440\u043d\u0435\u0442 html, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e: (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.extension = json)

"},{"location":"themes/theme-vars/#host","title":"host()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0445\u043e\u0441\u0442-\u0447\u0430\u0441\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0430. (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.host = mysite.com)

"},{"location":"themes/theme-vars/#base","title":"base()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0430. (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, uri.base = http://mysite.com)

"},{"location":"themes/theme-vars/#rooturl-include-host-false","title":"rootUrl([include_host = false])","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Grav. (\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. uri.rootUrl() = http://mysite.com/grav)

"},{"location":"themes/theme-vars/#referrer","title":"referrer()","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0435\u0444\u0435\u0440\u0435\u0440\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"themes/theme-vars/#obekt-header","title":"\u041e\u0431\u044a\u0435\u043a\u0442 header","text":"

\u041e\u0431\u044a\u0435\u043a\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u043c \u0434\u043b\u044f page.header() \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0435\u0442\u043b\u044f\u0435\u0442\u0435 \u043f\u043e \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c page \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438\u043b\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.

"},{"location":"themes/theme-vars/#obekt-content","title":"\u041e\u0431\u044a\u0435\u043a\u0442 content","text":"

\u041e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u043c page.content() \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

\u0414\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e:

{{ content|raw }}\n
"},{"location":"themes/theme-vars/#obekt-taxonomy","title":"\u041e\u0431\u044a\u0435\u043a\u0442 taxonomy","text":"

\u041e\u0431\u044a\u0435\u043a\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u0438 \u0441\u0430\u0439\u0442\u0430.

"},{"location":"themes/theme-vars/#obekt-browser","title":"\u041e\u0431\u044a\u0435\u043a\u0442 browser","text":"

\u0412\u0435\u0441\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 API. \u0412\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438.

Grav \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.

{{ browser.platform}}   # macintosh\n{{ browser.browser}}    # chrome\n{{ browser.version}}    # 41\n
"},{"location":"themes/theme-vars/#obekt-user","title":"\u041e\u0431\u044a\u0435\u043a\u0442 user","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432\u043e\u0448\u0435\u0434\u0448\u0435\u043c\u0443 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044a\u0435\u043a\u0442 Grav. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0430\u043a\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c, \u043a\u0430\u043a username, fullname, title \u0438 email:

{{ grav.user.username }}  # admin\n{{ grav.user.fullname }}  # \u0412\u0430\u0441\u044f \u0418\u0432\u0430\u043d\u043e\u0432\n{{ grav.user.title }}     # \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\n{{ grav.user.email }}     # vasja@ivanoff.com\n
"},{"location":"themes/theme-vars/#dobavlenie-svoikh-peremennykh","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0451 \u0432 \u0441\u0432\u043e\u0439 \u0444\u0430\u0439\u043b user/config/site.yaml, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437:

{{ site.my_variable }}\n

\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0451 \u0432 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c YAML \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a \u043d\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044a\u0435\u043a\u0442 page.header. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

title: My Page\nauthor: Joe Bloggs\n

\u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a:

\u0410\u0432\u0442\u043e\u0440 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b: {{ page.header.author }}\n
"},{"location":"themes/theme-vars/#dobavlenie-svoikh-obektov","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432","text":"

\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 - \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 Twig. \u042d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0442\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0432\u0435 \u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445.

"},{"location":"themes/twig-primer/","title":"\u0428\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 Twig","text":""},{"location":"themes/twig-primer/#shablonizator-twig","title":"\u0428\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440 Twig","text":"

Twig \u2014 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0434\u043b\u044f PHP. \u041e\u043d \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0441 \u043d\u0443\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443, \u0442\u0430\u043a \u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0443.

\u041b\u0451\u0433\u043a\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0434\u0435\u043b\u0430\u044e\u0442 \u0435\u0433\u043e \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445, \u043a\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441 Smarty, Django, Jinja, Liquid \u0438\u043b\u0438 Stencil.

\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Grav \u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u0438\u0437-\u0437\u0430 \u0435\u0433\u043e \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u0438\u0441\u0443\u0449\u0435\u0439 \u0435\u043c\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0422\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f PHP, \u0441\u0434\u0435\u043b\u0430\u043b \u0435\u0433\u043e \u0432\u044b\u0431\u043e\u0440 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Grav \u043d\u0435\u0441\u043e\u043c\u043d\u0435\u043d\u043d\u044b\u043c.

Twig \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 PHP. \u042d\u0442\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 PHP \u0434\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043a\u0438\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043b\u0435\u043a\u0441\u0435\u0440\u0443 \u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u0443. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0433\u0438 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u044b. \u041b\u0435\u043a\u0441\u0435\u0440 \u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 Twig \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a (DSL).

\u041a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, Twig \u043d\u0435 \u0441\u0440\u0435\u0437\u0430\u0435\u0442 \u0443\u0433\u043b\u044b. \u041e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0440\u0435\u0436\u0438\u043c \u00ab\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043d\u0435\u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434. \u042d\u0442\u043e \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Twig \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044f\u0437\u044b\u043a\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u0448\u0430\u0431\u043b\u043e\u043d\u0430.

\u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0435\u0442 \u0432\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c. \u0412 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 YAML \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043c\u043e\u0449\u043d\u0443\u044e \u0438 \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043b\u044e\u0431\u044b\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c \u0441\u0430\u0439\u0442\u043e\u0432.

"},{"location":"themes/twig-primer/#kak-rabotaet-twig","title":"\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Twig?","text":"

Twig \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0443\u0431\u0438\u0440\u0430\u044f \u0432\u0441\u0435 \u00ab\u0444\u043e\u043a\u0443\u0441\u044b\u00bb \u0438\u0437 \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u0428\u0430\u0431\u043b\u043e\u043d\u044b - \u044d\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u043c\u0435\u0440\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430.

\u0422\u0435\u0433\u0438 \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0444\u0430\u0439\u043b\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044e\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0430\u043c\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430.

\u0412 Twig \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f.

  • {{ }} \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f;
  • {% %} \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438.

\u0412\u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Twig:

<!DOCTYPE html>\n<html>\n    <head>\n        <title>\u0412\u0441\u0451 \u043e \u043f\u0435\u0447\u0435\u043d\u044e\u0448\u043a\u0430\u0445</title>\n    </head>\n    <body>\n        \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 {{ name }} \u0438 \u044f \u043e\u0431\u043e\u0436\u0430\u044e \u043f\u0435\u0447\u0435\u043d\u044c\u0435.\n        \u041c\u043e\u0438 \u0441\u0430\u043c\u044b\u0435 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u0432\u0438\u0434\u044b \u043f\u0435\u0447\u0435\u043d\u044c\u044f:\n        <ul>\n        {% for cookie in cookies %}\n            <li>{{ cookie.flavor }}</li>\n        {% endfor %}\n        </ul>\n        <h1>\u041f\u0435\u0447\u0435\u043d\u044c\u0435 \u2014 \u043b\u0443\u0447\u0448\u0435\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c!</h1>\n    </body>\n</html>\n

\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0430\u0439\u0442\u0430 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Twig \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u0430\u0432\u0442\u043e\u0440\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u0438\u043f\u043e\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.

\u0428\u0430\u0431\u043b\u043e\u043d \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 lexer, \u0433\u0434\u0435 \u0435\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u0430\u0440\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0435\u043b\u043a\u0438\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u0438. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u044b \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0445 \u0432 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e.

\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u043e \u0432 PHP-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0451\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.

Twig \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u0433\u043e\u0432, \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u0442\u0435\u0441\u0442\u043e\u0432, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 Twig \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0435\u0433\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.

"},{"location":"themes/twig-primer/#sintaksis-twig","title":"\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Twig","text":"

\u0428\u0430\u0431\u043b\u043e\u043d Twig \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0435\u043c\u0443 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041a \u043d\u0438\u043c \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0442\u0435\u0433\u0438, \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.

\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044d\u0442\u0438 \u0432\u0430\u0436\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043f\u043e\u043c\u043e\u0447\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d.

"},{"location":"themes/twig-primer/#tegi","title":"\u0422\u0435\u0433\u0438","text":"

\u0422\u0435\u0433\u0438 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 Twig, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 Twig \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u0430 \u043a\u0430\u043a\u043e\u0439 \u2014 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430.

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0442\u0435\u0433\u043e\u0432, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 \u0438\u0445 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430.

"},{"location":"themes/twig-primer/#kommentarii","title":"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438","text":"

\u0422\u0435\u0433\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 (`{#Insert Comment Here#}') \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig, \u043d\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0432\u0438\u0434\u043d\u044b \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u041e\u043d\u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430, \u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043d\u0435 \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f.

\u0425\u043e\u0440\u043e\u0448\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0442\u0435\u0433\u0438 \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043a\u043e\u0434\u0430 \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u043b\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440 \u0432 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043c\u043e\u0433 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u043e\u043d\u044f\u0442\u044c.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0435\u0433\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig:

{# \u0428\u043e\u043a\u043e\u043b\u0430\u0434\u043d\u043e\u0435 \u043f\u0435\u0447\u0435\u043d\u044c\u0435 \u2014 \u044d\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u043e! \u041d\u0438\u043a\u043e\u043c\u0443 \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0439! #}\n
"},{"location":"themes/twig-primer/#vykhodnye-tegi","title":"\u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u0433\u0438","text":"

\u0422\u0435\u0433\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 ({{ Insert Output Here }}) \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434. \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0432\u0441\u0451, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438\u043b\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0435.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u0433\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig:

\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 {{ name }} \u0438 \u044f \u043e\u0431\u043e\u0436\u0430\u044e \u043f\u0435\u0447\u0435\u043d\u044c\u0435.\n

\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f name \u0431\u044b\u043b\u0430 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043a\u0430\u043a \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0436\u0435\u0439\u043a \u0438 \u044f \u043e\u0431\u043e\u0436\u0430\u044e \u043f\u0435\u0447\u0435\u043d\u044c\u0435., \u0442\u0430\u043a \u043a\u0430\u043a \u0414\u0436\u0435\u0439\u043a \u0431\u044b\u043b\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u043c\u0435\u043d\u0438.

\u041e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 autoescape \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 |e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0441\u0430\u0439\u0442 \u043e\u0442 XSS-\u0430\u0442\u0430\u043a. \u0414\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e HTML-\u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0438\u043b\u044c\u0442\u0440 |raw.

"},{"location":"themes/twig-primer/#tegi-deistvii","title":"\u0422\u0435\u0433\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439","text":"

\u0422\u0435\u0433\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u2014 \u044d\u0442\u043e \u043f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u0432 \u043c\u0438\u0440\u0435 Twig. \u042d\u0442\u0438 \u0442\u0435\u0433\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0447\u0442\u043e-\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0447\u0442\u043e-\u0442\u043e, \u043b\u0438\u0431\u043e \u0441\u0438\u0434\u044f\u0442 \u0441\u043b\u043e\u0436\u0430 \u0440\u0443\u043a\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u043e\u0436\u0438\u0434\u0430\u044f, \u043f\u043e\u043a\u0430 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u0435\u0433\u043e.

\u0422\u0435\u0433\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0437\u0430\u0434\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0446\u0438\u043a\u043b \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u0430\u0448\u0438 for \u0438 if \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u043a.

\u0412\u043e\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0435\u0433 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig:

{% set hour = now | date(\"G\") %}\n{% if hour >= 9 and hour < 17 %}\n    <p>\u0412\u0440\u0435\u043c\u044f \u043f\u0435\u0447\u0435\u043d\u044c\u044f!</p>\n{% else %}\n    <p>\u041f\u043e\u0440\u0430 \u0438\u0441\u043f\u0435\u0447\u044c \u0435\u0449\u0451 \u043f\u0435\u0447\u0435\u043d\u044e\u0448\u0435\u043a!</p>\n{% endif %}\n

\u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u0433 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0447\u0430\u0441 \u043a\u0430\u043a \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0447\u0430\u0441 \u0432 24-\u0447\u0430\u0441\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0438 \u043e\u043d\u043e \u043c\u0435\u0436\u0434\u0443 9 \u0443\u0442\u0440\u0430 \u0438 5 \u0432\u0435\u0447\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a, \u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0412\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043f\u0435\u0447\u0435\u043d\u044e\u0448\u0435\u043a!. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u0435\u0447\u044c \u0435\u0449\u0451 \u043f\u0435\u0447\u0435\u043d\u044c\u044f!.

\u041e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u0442\u043a\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0435\u0433 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0433\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442.

"},{"location":"themes/twig-primer/#filtry","title":"\u0424\u0438\u043b\u044c\u0442\u0440\u044b","text":"

\u0424\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u0433\u0438 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435.

\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 name \u043c\u043e\u0436\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 SGML/XML \u0442\u044d\u0433\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u0434, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u043d\u0438\u0436\u0435:

{{ name|striptags }}\n
"},{"location":"themes/twig-primer/#funktsii","title":"\u0424\u0443\u043d\u043a\u0446\u0438\u0438","text":"

\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u0417\u0430 \u043d\u0438\u043c\u0438, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445, \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c\u044b\u0445 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043a\u043e\u0431\u043a\u0438 (), \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0435.

{% if date(cookie.created_at) < date('-2days') %}\n    {# \u0421\u044a\u0435\u0448\u044c \u044d\u0442\u043e! #}\n{% endif %}\n
"},{"location":"themes/twig-primer/#resursy","title":"\u0420\u0435\u0441\u0443\u0440\u0441\u044b","text":"
  • \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Twig
  • Twig \u0434\u043b\u044f \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432
  • Twig \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432
  • 6-\u043c\u0438\u043d\u0443\u0442\u043d\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Twig
  • \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Twig
  • Twig: \u041e\u0441\u043d\u043e\u0432\u044b (\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u043a \u043f\u043b\u0430\u0442\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443)
"},{"location":"themes/twig-tags-filters-functions/","title":"\u041e\u0431\u0437\u043e\u0440","text":""},{"location":"themes/twig-tags-filters-functions/#tegi-filtry-i-funktsii-twig","title":"\u0422\u0435\u0433\u0438, \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Twig","text":"

\u0425\u043e\u0442\u044f Twig \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0442\u0435\u0433\u043e\u0432, Grav \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439,\u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0435\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438.

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 Twig, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0421\u0432\u043e\u0438 \u0444\u0438\u043b\u044c\u0442\u0440/\u0444\u0443\u043d\u043a\u0446\u0438\u044f Twig \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0420\u0435\u0446\u0435\u043f\u0442\u044b Twig \u0432 \u0433\u043b\u0430\u0432\u0435 \u0421\u0431\u043e\u0440\u043d\u0438\u043a \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432.

"},{"location":"themes/twig-tags-filters-functions/#tegi","title":"\u0422\u0435\u0433\u0438","text":"

\u0422\u0435\u0433 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c Twig. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u0433\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u0430\u043a include, block, for, if \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435. \u0422\u0435\u0433\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 Twig \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 {% tagname %}. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u0435\u0433\u043e\u0432 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e {% endtagname %}.

Grav \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0435\u0433\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0430\u043a cache, markdown, script, style, switch \u0438 \u0434\u0440.

\u0422\u0435\u0433\u0438 Twig Grav

"},{"location":"themes/twig-tags-filters-functions/#filtry","title":"\u0424\u0438\u043b\u044c\u0442\u0440\u044b","text":"

\u0424\u0438\u043b\u044c\u0442\u0440\u044b Twig \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0430\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0435\u0440\u0442\u044b (|). \u041e\u043d\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438. \u041f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043b\u0435\u0432\u0430, \u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432 \u043a\u0440\u0443\u0433\u043b\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445. \u0424\u0438\u043b\u044c\u0442\u0440\u044b \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043e\u0441\u043e\u0431\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u0441\u0440\u0435\u0434\u0443.

\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 Twig \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 date, escape, join, lower, slice \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435. \u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:

{% set foo = \"one,two,three,four,five\"|split(',', 3) %}\n

Grav \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0430\u043a hyphenize, nicetime, starts_with, contains, base64_decode \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435.

\u0424\u0438\u043b\u044c\u0442\u0440\u044b Twig Grav

"},{"location":"themes/twig-tags-filters-functions/#funktsii","title":"\u0424\u0443\u043d\u043a\u0446\u0438\u0438","text":"

\u0424\u0443\u043d\u043a\u0446\u0438\u0438 Twig \u2014 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 Twig. \u041e\u043d\u0438 \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 |, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0438\u043c\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u043f\u043e\u0441\u043b\u0435 \u0438\u043c\u0435\u043d\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0427\u0430\u0441\u0442\u043e Grav \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440, \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u043b\u043e\u0433\u0438\u043a\u0438 \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u044b\u0431\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442.

\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 Twig \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 block, dump, parent, random, range \u0438 \u0434\u0440. \u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:

{{ random(['apple', 'orange', 'citrus']) }}\n

Grav \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0430\u043a authorize, debug, evaluate, regex_filter, media \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435.

\u0424\u0443\u043d\u043a\u0446\u0438\u0438 Twig Grav

"},{"location":"themes/twig-tags-filters-functions/filters/","title":"\u0424\u0438\u043b\u044c\u0442\u0440\u044b Twig","text":""},{"location":"themes/twig-tags-filters-functions/filters/#filtry-twig","title":"\u0424\u0438\u043b\u044c\u0442\u0440\u044b Twig","text":"

\u0424\u0438\u043b\u044c\u0442\u0440\u044b Twig \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c Twig \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 |, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u043c\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Twig, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438.

"},{"location":"themes/twig-tags-filters-functions/filters/#absolute-url","title":"absolute_url","text":"

\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 HTML, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 src \u0438\u043b\u0438 href, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0443\u0442\u0438 \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 URL, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430.

{{ <img src=\"/some/path/to/image.jpg\" />'|absolute_url }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#array-unique","title":"array_unique","text":"

\u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0434\u043b\u044f PHP 'array_unique()', \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430.

{{ ['foo', 'bar', 'foo', 'baz']|array_unique }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#base32-encode","title":"base32_encode","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 base32 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439

{{ 'some variable here'|base32_encode` }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#base32-decode","title":"base32_decode","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 base32 \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439

{{ 'ONXW2ZJAOZQXE2LBMJWGKIDIMVZGK'|base32_decode }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#base64-encode","title":"base64_encode","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 base64 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439

{{ 'some variable here'|base64_encode }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#base64-decode","title":"base64_decode","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 base64 \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439

{{ 'c29tZSB2YXJpYWJsZSBoZXJl'|base64_decode }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#basename","title":"basename","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u043f\u0443\u0442\u0438.

{{ '/etc/sudoers.d'|basename }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#camelize","title":"camelize","text":"

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 \"CamelCase\"

{{ 'send_email'|camelize }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#chunk-split","title":"chunk_split","text":"

\u0420\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043b\u043a\u0438\u0435 \u043a\u0443\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.

{{ 'ONXW2ZJAOZQXE2LBMJWGKIDIMVZGKA'|chunk_split(6, '-') }}\n
ONXW2Z-JAOZQX-E2LBMJ-WGKIDI-MVZGKA-\n
"},{"location":"themes/twig-tags-filters-functions/filters/#contains","title":"contains","text":"

\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443

{{ 'some string with things in it'|contains('things') }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#preobrazovanie-znachenii","title":"\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439","text":"

PHP 7 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u043e\u0433\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0438\u043f\u043e\u0432, \u0430 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e\u0442, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u0442\u043e\u0434\u0443, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c:

"},{"location":"themes/twig-tags-filters-functions/filters/#string","title":"string","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 |string \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a \u0441\u0442\u0440\u043e\u043a\u0435.

"},{"location":"themes/twig-tags-filters-functions/filters/#int","title":"int","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 |int \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a \u0446\u0435\u043b\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443.

"},{"location":"themes/twig-tags-filters-functions/filters/#bool","title":"bool","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 |bool \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443.

"},{"location":"themes/twig-tags-filters-functions/filters/#float","title":"float","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 |float \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a \u0447\u0438\u0441\u043b\u0443 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.

"},{"location":"themes/twig-tags-filters-functions/filters/#array","title":"array","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 |array \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443.

"},{"location":"themes/twig-tags-filters-functions/filters/#defined","title":"defined","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u043b\u0438 \u043a\u0430\u043a\u0430\u044f-\u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

{% set header_image_width  = page.header.header_image_width|defined(900) %}\n

\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f header_image_width \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 900, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.

"},{"location":"themes/twig-tags-filters-functions/filters/#dirname","title":"dirname","text":"

\u0412\u0435\u0440\u043d\u0443\u0442\u044c \u0438\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043f\u0443\u0442\u0438.

{{ '/etc/sudoers.d'|dirname }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#ends-with","title":"ends_with","text":"

\u0411\u0435\u0440\u0435\u0442 \u0438\u0433\u043e\u043b\u043a\u0443 \u0438 \u0441\u0442\u043e\u0433 \u0441\u0435\u043d\u0430 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u043e\u0433 \u0438\u0433\u043b\u043e\u0439. \u0422\u0430\u043a\u0436\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0438\u0433\u043b \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c true, \u0435\u0441\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u043e\u0433 \u0441\u0435\u043d\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0433\u043b\u043e\u0439.

{{ 'the quick brown fox'|ends_with('fox') }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#fieldname","title":"fieldName","text":"

\u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044f \u043f\u0443\u0442\u0435\u043c \u0437\u0430\u043c\u0435\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0438 \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0447\u043a\u0443 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u0430

{{ 'field.name|fieldName }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#get-type","title":"get_type","text":"

\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439:

{{ page|get_type }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#humanize","title":"humanize","text":"

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442.

{{ 'something_text_to_read'|humanize }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#hyphenize","title":"hyphenize","text":"

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u0434\u0435\u0444\u0438\u0441\u043e\u043c.

{{ 'Something Text to Read'|hyphenize }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#json-decode","title":"json_decode","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c JSON, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u0442\u0440:

{% set array = '{\"first_name\": \"Guido\", \"last_name\":\"Rossum\"}'|json_decode %}\n{{ print_r(array) }}\n
stdClass Object\n(\n    [first_name] => Guido\n    [last_name] => Rossum\n)\n
"},{"location":"themes/twig-tags-filters-functions/filters/#ksort","title":"ksort","text":"

\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443

array|ksort

{% set ritems = {'orange':1, 'apple':2, 'peach':3}|ksort %}\n{% for key, value in ritems %}{{ key }}:{{ value }}, {% endfor %}\n
Array\n(\n    [apple] => 2\n    [orange] => 1\n    [peach] => 3\n)\n
"},{"location":"themes/twig-tags-filters-functions/filters/#ltrim","title":"ltrim","text":"

\u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0430\u0441\u043a\u0438 (\u0441\u043c. https://php.net/manual/ru/function.ltrim.php).

{{ '/strip/leading/slash/'|ltrim('/') }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#markdown","title":"markdown","text":"

\u0412\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443, \u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0451 \u0432 HTML, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0430\u0440\u0441\u0435\u0440 Markdown Grav. \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 boolean-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440:

  • true (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e): \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0431\u043b\u043e\u043a (\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0436\u0438\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432 \u0442\u0435\u0433\u0438 <p>)
  • false: \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0443 (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u043c\u0438 \u0442\u0435\u0433\u0430\u043c\u0438)
{{ string|markdown($is_block) }}\n
<div class=\"div\">\n    {{ 'A paragraph with **markdown** and [a link](http://www.cnn.com)'|markdown }}\n</div>\n\n<p class=\"paragraph\">{{'A line with **markdown** and [a link](http://www.cnn.com)'|markdown(false) }}</p>\n
"},{"location":"themes/twig-tags-filters-functions/filters/#md5","title":"md5","text":"

\u0421\u043e\u0437\u0434\u0430\u0435\u0442 md5 \u0445\u044d\u0448 \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a\u0438

{{ 'anything'|md5 }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#modulus","title":"modulus","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u0443 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u0438 \u0441\u0438\u043c\u0432\u043e\u043b Modulus % \u0432 PHP. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0447\u0438\u0441\u043b\u043e\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0432 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u043c \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435 \u0438 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430.

{{ 7|modulus(3, ['red', 'blue', 'green']) }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#monthize","title":"monthize","text":"

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0434\u043d\u0435\u0439 \u0432 \u0447\u0438\u0441\u043b\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432

{{ '181'|monthize }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#nicecron","title":"nicecron","text":"

\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u043b\u044f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 cron

{{ \"2 * * * *\"|nicecron }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#nicefilesize","title":"nicefilesize","text":"

\u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0435:

{{ 612394|nicefilesize }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#nicenumber","title":"nicenumber","text":"

\u0412\u044b\u0432\u043e\u0434 \u0447\u0438\u0441\u043b\u0430 \u0432 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0447\u0438\u0441\u0435\u043b:

{{ 12430|nicenumber }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#nicetime","title":"nicetime","text":"

\u0412\u044b\u0432\u043e\u0434 \u0434\u0430\u0442\u044b \u0432 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438:

{{ page.date|nicetime(false) }}\n

\u041f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u044b \u0432 \u043f\u043e\u043b\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e true.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 false, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u00ab\u043d\u0430\u0437\u0430\u0434\u00bb \u0438\u043b\u0438 \u00ab\u0441 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u00bb \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u044f\u0437\u044b\u043a\u0435) \u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.

"},{"location":"themes/twig-tags-filters-functions/filters/#of-type","title":"of_type","text":"

\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440:

{{ page|of_type('string') }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#ordinalize","title":"ordinalize","text":"

\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043a \u0446\u0435\u043b\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 1-\u0435, 2-\u0435, 3-\u0435, 4-\u0435):

{{ '10'|ordinalize }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#pad","title":"pad","text":"

\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c. \u042d\u0442\u043e \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0434\u043b\u044f PHP-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 str_pad().

{{ 'foobar'|pad(10, '-') }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#pluralize","title":"pluralize","text":"

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0443\u044e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e

{{ 'person'|pluralize }}\n

pluralize \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u043d\u043e 2, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u043e\u043f\u0443\u0449\u0435\u043d\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0444\u043e\u0440\u043c\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:

<p>We have {{ num_vacancies }} {{ 'vacancy'|pluralize(num_vacancies) }} right now.</p>\n
"},{"location":"themes/twig-tags-filters-functions/filters/#print-r","title":"print_r","text":"

\u041f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439

{{ page.header|print_r }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#randomize","title":"randomize","text":"

\u0420\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043e\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u0438\u0445 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435.

{{ array|randomize }}\n
{% set ritems = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']|randomize(2) %}\n{% for ritem in ritems %}{{ ritem }}, {% endfor %}\n
Array\n(\n    [0] => one\n    [1] => two\n    [2] => three\n    [3] => eight\n    [4] => seven\n    [5] => four\n    [6] => five\n    [7] => six\n    [8] => ten\n    [9] => nine\n)\n
"},{"location":"themes/twig-tags-filters-functions/filters/#regex-replace","title":"regex_replace","text":"

\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0434\u043b\u044f PHP preg_replace() \u043c\u0435\u0442\u043e\u0434, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u043d\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430:

{{ 'The quick brown fox jumps over the lazy dog.'|regex_replace(['/quick/','/brown/','/fox/','/dog/'], ['slow','black','bear','turtle']) }}\n

\u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c ~ \u0432\u043c\u0435\u0441\u0442\u043e /. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0430\u043c, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0443\u0434\u0432\u043e\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ~\\/\\#.*~~, \u0430 \u043d\u0435'/\\/\\#.*/'`, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 PCRE-\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c\u0443 PHP.

"},{"location":"themes/twig-tags-filters-functions/filters/#rtrim","title":"rtrim","text":"
{{ '/strip/trailing/slash/'|rtrim('/') }}\n

\u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0430\u0441\u043a\u0438 (\u0441\u043c. https://php.net/manual/ru/function.rtrim.php).

"},{"location":"themes/twig-tags-filters-functions/filters/#singularize","title":"singularize","text":"

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0443\u044e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e

{{ 'shoes'|singularize }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#safe-email","title":"safe_email","text":"

\u0424\u0438\u043b\u044c\u0442\u0440 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u044b ASCII, \u0447\u0442\u043e \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u044f\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u0445\u0432\u0430\u0442 \u0441\u043f\u0430\u043c-\u0431\u043e\u0442\u043e\u0432.

{{ \"someone@domain.com\"|safe_email }}\n

\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 mailto:

<a href=\"mailto:{{'your.email@server.com'|safe_email}}\">\n  Email me\n</a>\n

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438 \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u044b, \u043d\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b (\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b) \u0432\u044b\u044f\u0432\u0438\u0442 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443, \u043b\u0435\u0436\u0430\u0449\u0443\u044e \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.

"},{"location":"themes/twig-tags-filters-functions/filters/#sort-by-key","title":"sort_by_key","text":"

\u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443

{{ array|sort_by_key }}\n
{% set people = [{'email':'fred@yahoo.com', 'id':34}, {'email':'tim@exchange.com', 'id':21}, {'email':'john@apple.com', 'id':2}]|sort_by_key('id') %}\n{% for person in people %}{{ person.email }}:{{ person.id }}, {% endfor %}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#starts-with","title":"starts_with","text":"

\u0411\u0435\u0440\u0435\u0442 \u0438\u0433\u043b\u0443 \u0438 \u0441\u0442\u043e\u0433 \u0441\u0435\u043d\u0430 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u043e\u0433 \u0441\u0435\u043d\u0430 \u0441 \u0438\u0433\u043b\u044b. \u0422\u0430\u043a\u0436\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0438\u0433\u043b \u0438 \u0432\u0435\u0440\u043d\u0435\u0442 true, \u0435\u0441\u043b\u0438 \u043d\u0438 \u0441\u0442\u043e\u0433 \u0441\u0435\u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0438\u0433\u043b\u044b.

{{ 'the quick brown fox'|starts_with('the') }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#titleize","title":"titleize","text":"

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 \u00ab\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u00bb

{{ 'welcome page'|titleize }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#t","title":"t","text":"

\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044f\u0437\u044b\u043a

{{ 'MY_LANGUAGE_KEY_STRING'|t }}\n

\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b \u044d\u0442\u0438 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.

"},{"location":"themes/twig-tags-filters-functions/filters/#tu","title":"tu","text":"

\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044f\u0437\u044b\u043a, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

{{ 'MY_LANGUAGE_KEY_STRING'|tu }}\n

\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c yaml.

"},{"location":"themes/twig-tags-filters-functions/filters/#ta","title":"ta","text":"

\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u043d\u0430 \u044f\u0437\u044b\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 |ta. \u0421\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.

{{ 'MONTHS_OF_THE_YEAR'|ta(post.date|date('n') - 1) }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#tl","title":"tl","text":"

\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439.

{{ 'SIMPLE_TEXT'|tl(['fr']) }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#truncate","title":"truncate","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u0443\u044e, \u0443\u0441\u0435\u0447\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0442\u0440\u043e\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u0442\u0440. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 - \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043d\u043e \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:

{{ '\u043e\u0434\u043d\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f'|truncate(5)|raw }}\n

\u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0434\u043e 5 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.

{{ '\u043e\u0434\u043d\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f'|truncate(5, true)|raw }}\n

\u0424\u0438\u043b\u044c\u0442\u0440 |raw \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e &hellip; (\u043c\u043d\u043e\u0433\u043e\u0442\u043e\u0447\u0438\u0435), \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0441\u044f \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c Twig

\u041e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0446\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 5 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0435\u0437\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 HTML, \u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440 |striptags, \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 HTML, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u0433\u0430\u043c\u0438:

{{ '<span>\u043e\u0434\u043d\u043e <strong>\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435</strong>. \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f</span>'|raw|striptags|truncate(25) }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#safe-truncate","title":"safe_truncate","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 |safe_truncate \u0434\u043b\u044f \u043e\u0431\u0440\u0435\u0437\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u043d\u044b\u0445 \u0441\u043b\u043e\u0432.

"},{"location":"themes/twig-tags-filters-functions/filters/#truncate-html","title":"truncate_html","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 |truncate_html \u0434\u043b\u044f \u043e\u0431\u0440\u0435\u0437\u043a\u0438 HTML \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0431\u0435\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u044b\u0445 \u0441\u043b\u043e\u0432.

"},{"location":"themes/twig-tags-filters-functions/filters/#safe-truncate-html","title":"safe_truncate_html","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 |safe_truncate_html \u0434\u043b\u044f \u043e\u0431\u0440\u0435\u0437\u043a\u0438 HTML \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u043d\u044b\u0445 \u0441\u043b\u043e\u0432.

"},{"location":"themes/twig-tags-filters-functions/filters/#underscorize","title":"underscorize","text":"

\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 \u00abunder_scored\u00bb

{{ 'CamelCased'|underscorize }}\n
"},{"location":"themes/twig-tags-filters-functions/filters/#yaml-encode","title":"yaml_encode","text":"

\u0414\u0430\u043c\u043f/\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 YAML

{% set array = {foo: [0, 1, 2, 3], baz: 'qux' } %}\n{{ array|yaml_encode }}\n
foo:\n  - 0\n  - 1\n  - 2\n  - 3\nbaz: qux\n
"},{"location":"themes/twig-tags-filters-functions/filters/#yaml-decode","title":"yaml_decode","text":"

\u0414\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435/\u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u0437 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 YAML

{% set yaml = \"foo: [0, 1, 2, 3]\\nbaz: qux\" %}\n{{ yaml|yaml_decode|var_dump }}\n
array(2) {\n  [\"foo\"]=>\n  array(4) {\n    [0]=>\n    int(0)\n    [1]=>\n    int(1)\n    [2]=>\n    int(2)\n    [3]=>\n    int(3)\n  }\n  [\"baz\"]=>\n  string(3) \"qux\"\n}\n
"},{"location":"themes/twig-tags-filters-functions/functions/","title":"\u0424\u0443\u043d\u043a\u0446\u0438\u0438 Twig","text":""},{"location":"themes/twig-tags-filters-functions/functions/#funktsii-twig","title":"\u0424\u0443\u043d\u043a\u0446\u0438\u0438 Twig","text":"

\u0424\u0443\u043d\u043a\u0446\u0438\u0438 Twig \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u043e\u0431\u043a\u0438.

"},{"location":"themes/twig-tags-filters-functions/functions/#array","title":"array","text":"

\u041f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443:

{% set value = array(value) %}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#array-diff","title":"array_diff","text":"

\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432:

{% set diff = array_diff(array1, array2...) %}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#array-key-value","title":"array_key_value","text":"

\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447/\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432:

{% set my_array = {fruit: 'apple'} %}\n{% set my_array = array_key_value('meat','steak', my_array) %}\n{{ print_r(my_array) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#array-key-exists","title":"array_key_exists","text":"

\u041e\u0431\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 array_key_exists PHP, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u043a\u043b\u044e\u0447 \u0432 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0438\u043b\u0438 \u043d\u0435\u0442:

{% set my_array = {fruit: 'apple', meat: 'steak'} %}\n{{ array_key_exists('meat', my_array) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#array-intersect","title":"array_intersect","text":"

\u0424\u0443\u043d\u043a\u0446\u0438\u044f array_intersect \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0438\u043b\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 Grav:

{% set array_1 = {fruit: 'apple', meat: 'steak'} %}\n{% set array_2 = {fish: 'tuna', meat: 'steak'} %}\n{{ print_r(array_intersect(array_1, array_2)) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#array-unique","title":"array_unique","text":"

\u041e\u0431\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f PHP array_unique(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430:

{{ print_r(array_unique(['foo', 'bar', 'foo', 'baz'])) }}\n
Array\n(\n  0 => \"foo\"\n  1 => \"bar\"\n  3 => \"baz\"\n)\n
"},{"location":"themes/twig-tags-filters-functions/functions/#authorize","title":"authorize","text":"

\u0423\u043f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u0432\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0440\u0435\u0441\u0443\u0440\u0441\u0430. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0440\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439.

{{ print_r(authorize(['admin.statistics', 'admin.super'])) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#body-class","title":"body_class","text":"

\u0411\u0435\u0440\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043d\u0430 body_classes, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043b\u0438 \u043e\u043d\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b.

{% set body_classes = body_class(['header-fixed', 'header-animated', 'header-dark', 'header-transparent', 'sticky-footer']) %}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#cron","title":"cron","text":"

\u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \"Cron\" \u0438\u0437 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 cron:

{{ cron(\"3 * * * *\").getNextRunDate()|date(config.date_format.default) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#dump","title":"dump","text":"

\u0411\u0435\u0440\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e Twig \u0438 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0451 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 Grav. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \"\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\" \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d.

{{ dump(page.header) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#debug","title":"debug","text":"

\u0422\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 dump()

"},{"location":"themes/twig-tags-filters-functions/functions/#evaluate","title":"evaluate","text":"

\u0424\u0443\u043d\u043a\u0446\u0438\u044e evaluate \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u0430\u043a Twig:

{{ evaluate('grav.language.getLanguage') }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#evaluate-twig","title":"evaluate_twig","text":"

\u0422\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 evaluate, \u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Twig

{{ evaluate_twig('This is a twig variable: {{ foo }}', {foo: 'bar'}) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#exif","title":"exif","text":"

\u0412\u044b\u0432\u043e\u0434 EXIF-\u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0435\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u044b \u044d\u0442\u0438 \"\u043c\u0435\u0434\u0438\u0430\": auto_metadata_exif: true\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432system.yaml`. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig:

{% set image = page.media['sample-image.jpg'] %}\n{% set exif = exif(image.filepath, true) %}\n{{ exif.MaxApertureValue }}\n

\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0431\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u0430\u043c\u0435\u0440\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 MaxApertureValue, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \"40/10\". \u0412\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c {{dump(exif)}} \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435.

"},{"location":"themes/twig-tags-filters-functions/functions/#get-cookie","title":"get_cookie","text":"

\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u0443\u043a\u0438-\u0444\u0430\u0439\u043b\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:

{{ get_cookie('your_cookie_key') }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#get-type","title":"get_type","text":"

\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439:

{{ get_type(page) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#gist","title":"gist","text":"

\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 Github Gist ID \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f Gist:

{{ gist('bc448ff158df4bc56217') }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#header-var","title":"header_var","text":"

\u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 page.header.<variable>.

\u0421 \u0443\u0447\u0451\u0442\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432 \u0431\u043b\u043e\u043a\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445

---\ntitle: Home\n---\n

header_var('title') Home

"},{"location":"themes/twig-tags-filters-functions/functions/#http-response-code","title":"http_response_code","text":"

\u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043a\u043e\u0434 response_code, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043a\u043e\u0434 \u0441\u0442\u0430\u0442\u0443\u0441\u0430. \u0415\u0441\u043b\u0438 \u043a\u043e\u0434 response_code \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d \u043a\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u041e\u0431\u0430 \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043a\u043e\u0434 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f 200, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0441\u0440\u0435\u0434\u0435 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.

{{ http_response_code(404) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#isajaxrequest","title":"isajaxrequest","text":"

\u0424\u0443\u043d\u043a\u0446\u0438\u044f isajaxrequest() \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043b\u0438 \u043e\u043f\u0446\u0438\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 HTTP_X_REQUESTED_WITH:

"},{"location":"themes/twig-tags-filters-functions/functions/#json-decode","title":"json_decode","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c JSON, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 \u044d\u0442\u043e\u0442 \u0444\u0438\u043b\u044c\u0442\u0440:

{{ json_decode({\"first_name\": \"Guido\", \"last_name\":\"Rossum\"}) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#media-directory","title":"media_directory","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0435\u0434\u0438\u0430-\u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438.

{{ media_directory('theme://images')['some-image.jpg'].cropResize(200,200).html }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#nicefilesize","title":"nicefilesize","text":"

\u0412\u044b\u0432\u043e\u0434\u0438\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0435.

{{ nicefilesize(612394) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#nicenumber","title":"nicenumber","text":"

\u0412\u044b\u0432\u043e\u0434 \u0447\u0438\u0441\u043b\u0430 \u0432 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0447\u0438\u0441\u0435\u043b.

{{ nicenumnber(12430) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#nicetime","title":"nicetime","text":"

\u0412\u044b\u0432\u043e\u0434 \u0434\u0430\u0442\u044b \u0432 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.

{{ nicetime(page.date) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#nonce-field","title":"nonce_field","text":"

\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u0435 \u0441 \u043a\u043e\u0434\u043e\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 Grav \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u044b \u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u043c action:

{{ nonce_field('action') }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#of-type","title":"of_type","text":"

\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440:

{{ of_type(page, 'string') }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#pathinfo","title":"pathinfo","text":"

\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0443\u0442\u044c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432:

{% set parts = pathinfo('/www/htdocs/inc/lib.inc.php') %}\n{{ print_r(parts) }}\n
Array\n(\n  [dirname] => /www/htdocs/inc\n  [basename] => lib.inc.php\n  [extension] => php\n  [filename] => lib.inc\n)\n
"},{"location":"themes/twig-tags-filters-functions/functions/#print-r","title":"print_r","text":"

\u041f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0432 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435:

{{ print_r(page.header) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#random-string","title":"random_string","text":"

\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u043a\u043b\u044e\u0447\u0430.

{{ random_string(10) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#unique-id","title":"unique_id","text":"

\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0434\u043b\u0438\u043d\u043e\u0439, \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c \u0438 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u043c. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 PHP uniqid() \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b random_string, \u044d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0439.

{{ unique_id(9) }}\n{{ unique_id(11, { prefix: 'user_' }) }}\n{{ unique_id(13, { suffix: '.json' }) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#range","title":"range","text":"

\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0440\u044f\u0434 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0441\u0442\u0443\u043f\u0435\u043d\u0447\u0430\u0442\u044b\u0445

{{ range(25, 300, 50) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#read-file","title":"read_file","text":"

\u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0443 \u0438 \u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430.

{{ read_file('plugins://admin/README.md')|markdown }}\n
# \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0430\u0434\u043c\u0438\u043d\u043a\u0438 Grav\n\n\u042d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d **\u0430\u0434\u043c\u0438\u043d\u043a\u0438** \u0434\u043b\u044f [Grav](https://github.com/getgrav/grav), \u043e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 HTML-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Grav, \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b....\n
"},{"location":"themes/twig-tags-filters-functions/functions/#redirect-me","title":"redirect_me","text":"

\u041f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f \u043d\u0430 URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u044b\u0431\u043e\u0440\u0443.

{{ redirect_me('http://google.com', 304) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#regex-filter","title":"regex_filter","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 preg_grep \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0441 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c:

{{ regex_filter(['pasta', 'fish', 'steak', 'potatoes'], \"/p.*/\") }}\n
Array\n(\n  0 => \"pasta\"\n  3 => \"potatoes\"\n)\n
"},{"location":"themes/twig-tags-filters-functions/functions/#regex-replace","title":"regex_replace","text":"

\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f PHP-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 preg_replace(), \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 regex-\u0437\u0430\u043c\u0435\u043d\u044b \u0442\u0435\u043a\u0441\u0442\u0430:

{{ regex_replace('The quick brown fox jumps over the lazy dog.', ['/quick/','/brown/','/fox/','/dog/'], ['slow','black','bear','turtle']) }}\n
The slow black bear jumps over the lazy turtle.\n
"},{"location":"themes/twig-tags-filters-functions/functions/#regex-match","title":"regex_match","text":"

\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f PHP-\u043c\u0435\u0442\u043e\u0434\u0430 preg_match(), \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c:

{{ regex_match('http://www.php.net/index.html', '@^(?:http://)?([^/]+)@i') }}\n
Array\n(\n  [0] => http://www.php.net\n  [1] => www.php.net\n)\n
"},{"location":"themes/twig-tags-filters-functions/functions/#regex-split","title":"regex_split","text":"

\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f PHP-\u043c\u0435\u0442\u043e\u0434\u0430 preg_split(). \u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0442\u0435\u043a\u0441\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430:

{{ regex_split('hypertext language, programming', '/\\\\s*,\\\\s*/u') }}\n
Array\n(\n  [0] => hypertext language\n  [1] => programming\n)\n
"},{"location":"themes/twig-tags-filters-functions/functions/#repeat","title":"repeat","text":"

\u0411\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437.

{{ repeat('blah ', 10) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#string","title":"string","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c, \u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435 json

{{ string(23) }}\n{{ string(['test' => 'x']) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#svg-image","title":"svg_image","text":"

\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 SVG-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e svg \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u0434 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0437\u043d\u0430\u0447\u043a\u0438 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439.

{{ svg_image(path, classes, strip_style) }}\n

strip_style - \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c SVG - \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e CSS-\u043a\u043b\u0430\u0441\u0441\u043e\u0432.

\u043f\u0440\u0438\u043c\u0435\u0440:

{{ svg_image('theme://images/something.svg', 'my-class-here mb-10', true) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#theme-var","title":"theme_var","text":"

\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u044b \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0442\u0435\u043c\u044b:

{{ theme_var('grid-size') }}\n

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 page.header.grid_size, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 theme.grid_size \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b:

{{ theme_var('grid_size', 1024) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#t","title":"t","text":"

\u041f\u0435\u0440\u0435\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443, \u043a\u0430\u043a \u0444\u0438\u043b\u044c\u0442\u0440 |t.

{{ t('SITE_NAME') }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#ta","title":"ta","text":"

\u0424\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c |ta.

"},{"location":"themes/twig-tags-filters-functions/functions/#tl","title":"tl","text":"

\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439.

{{ tl('SIMPLE_TEXT', ['fr']) }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#url","title":"url","text":"

\u0421\u043e\u0437\u0434\u0430\u0435\u0442 URL \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 PHP URL \u0432 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 HTML \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 URL \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d.

{{ url('theme://images/logo.png')|default('http://www.placehold.it/150x100/f4f4f4') }}\n
"},{"location":"themes/twig-tags-filters-functions/functions/#vardump","title":"vardump","text":"

\u0424\u0443\u043d\u043a\u0446\u0438\u044f vardump() \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e (\u0430 \u043d\u0435 \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0435, \u043a\u0430\u043a \u0432 dump())

{% set my_array = {foo: 'bar', baz: 'qux'} %}\n{{ vardump(my_array) }}\n
Array\n(\n  \"foo\" => \"bar\"\n  \"baz\" => \"qux\"\n)\n
"},{"location":"themes/twig-tags-filters-functions/functions/#xss","title":"xss","text":"

\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 XSS:

{{ xss('this string contains a <script>alert(\"hello\");</script> XSS vulnerability') }}\n
"},{"location":"themes/twig-tags-filters-functions/tags/","title":"\u0422\u0435\u0433\u0438 Twig","text":""},{"location":"themes/twig-tags-filters-functions/tags/#tegi-twig","title":"\u0422\u0435\u0433\u0438 Twig","text":"

Grav \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0442\u0435\u0433\u043e\u0432 Twig, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u0443\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Twig \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u0433\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438.

"},{"location":"themes/twig-tags-filters-functions/tags/#markdown","title":"markdown","text":"

\u0422\u044d\u0433 markdown \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043c\u043e\u0449\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f Markdown \u0432 \u0448\u0430\u0431\u043b\u043e\u043d Twig. \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0435\u0451 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 |markdown, \u043d\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 {% markdown %} \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c.

{% markdown %}\nThis is **bold** and this _underlined_\n\n1. This is a bullet list\n2. This is another item in that same list\n{% endmarkdown %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#script","title":"script","text":"

\u0422\u0435\u0433 script - \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0442\u0435\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0430\u0448 Twig \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c {% do assets...%}. \u042d\u0442\u043e \u0447\u0438\u0441\u0442\u043e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u0435\u0449\u0435\u0439.

"},{"location":"themes/twig-tags-filters-functions/tags/#fail-js","title":"\u0424\u0430\u0439\u043b JS","text":"
{% script 'theme://js/something.js' in 'bottom' priority: 20 with { defer: true, async: true } %}\n

\u0412 Grav 1.7.28 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439:

{% script module 'theme://js/module.mjs' %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#vnutrennii-js","title":"\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 JS","text":"
{% script in 'bottom' priority: 20 %}\n    alert('Warning!');\n{% endscript %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#style","title":"style","text":""},{"location":"themes/twig-tags-filters-functions/tags/#fail-css","title":"\u0424\u0430\u0439\u043b CSS","text":"
{% style 'theme://css/foo.css' priority: 20 %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#vnutrennii-css","title":"\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 CSS","text":"
{% style priority: 20 with { media: 'screen' } %}\n    a { color: red; }\n{% endstyle %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#link","title":"link","text":"
{% link icon 'theme://images/favicon.png' priority: 20 with { type: 'image/png' } %}\n{% link modulepreload 'plugin://grav-plugin/build/js/vendor.js' %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#switch","title":"switch","text":"

\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 switch \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0443\u0447\u0443 if else \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0439 \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0441\u0442\u044b\u043c\u0438 \u0438 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Twig.

{% switch type %}\n  {% case 'foo' %}\n     {{ my_data.foo }}\n  {% case 'bar' %}\n     {{ my_data.bar }}\n  {% default %}\n     {{ my_data.default }}\n{% endswitch %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#deferred","title":"deferred","text":"

\u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e Grav 1.6 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432. \u0421 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438, \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u043b\u043e\u043a \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u043d, \u0438\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0412\u043e\u0437\u044c\u043c\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440 {% block scripts %}, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f JavaScript \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d Twig, \u0438 \u0432\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d, \u0433\u0434\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0431\u043b\u043e\u043a, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 JavaScript. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0445 \u0432\u0435\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0430 \u0438\u043b\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0438\u043c.

\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u0431\u043b\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Deferred, \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u0432 \u043b\u044e\u0431\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 Twig, \u043d\u043e \u0435\u0433\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u043d \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 JavaScript \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u0430 {% do assets.addJs() %} \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u043e\u0442\u043b\u043e\u0436\u0435\u043d, \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u0430\u043a\u0442\u0438\u0432\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 Grav \u0437\u043d\u0430\u0435\u0442, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438.

{% block myblock deferred %}\n    This will be rendered after everything else.\n{% endblock %}\n

\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0441 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e {{ parent() }}. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u043c, \u0435\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b CSS \u0438\u043b\u0438 JavaScript.

{% block stylesheets %}\n    <!-- Additional css library -->\n    {% do assets.addCss('theme://libraries/leaflet/dist/leaflet.css') %}\n    {{ parent() }}\n{% endblock %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#throw","title":"throw","text":"

\u0415\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 \u043d\u0430\u0441 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0442\u044d\u0433 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e.

{% throw 404 'Not Found' %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#try-catch","title":"try & catch","text":"

\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043c\u043e\u0449\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 PHP-\u0441\u0442\u0438\u043b\u0435 \u0432 \u0432\u0430\u0448\u0438\u0445 Twig-\u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445, \u0442\u0430\u043a \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0442\u0435\u0433 try/catch.

{% try %}\n   <li>{{ user.get('name') }}</li>\n{% catch %}\n   User Error: {{ e.message }}\n{% endcatch %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#render","title":"render","text":"

\u0413\u0438\u0431\u043a\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u043d\u0438\u043a\u0430\u044e\u0442 \u0432\u043e \u0432\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b Grav. \u042d\u0442\u043e \u0441\u0430\u043c\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0449\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Twig, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u043d\u0438 \u0437\u043d\u0430\u044e\u0442, \u043a\u0430\u043a \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u0441\u0435\u0431\u044f. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445, \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0442\u0435\u0433 render, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c \u0438\u0437 \u043c\u0430\u043a\u0435\u0442\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043e\u0431\u044a\u0435\u043a\u0442.

{% render collection layout: 'list' %}\n{% render object layout: 'default' with { variable: 'value' } %}\n
"},{"location":"themes/twig-tags-filters-functions/tags/#cache","title":"cache","text":"

\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u0433\u0430 cache.

{% cache 600 %}\n  {{ some_complex_work() }}\n{% endcache %}\n

\u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 600 - \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u043a\u044d\u0448\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

"},{"location":"troubleshooting/common-problems/","title":"\u041e\u0431\u0449\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b","text":""},{"location":"troubleshooting/common-problems/#obshchie-problemy","title":"\u041e\u0431\u0449\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b","text":"

\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0435 Grav \u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 Discord Chat, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043f\u043e\u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043c \u0432\u0440\u0435\u043c\u044f \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 \u043e\u0434\u043d\u043e\u043c \u043b\u0435\u0433\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.

"},{"location":"troubleshooting/common-problems/#ne-udaetsia-podkliuchitsia-k-gpm","title":"\u041d\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a GPM","text":"

\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430

\u041d\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0438\u0447\u044c GPM, \u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.

\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432 PHP \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b cURL \u0438 OpenSSL. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u0432 \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f -> \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b \u00abOpenSSL\u00bb \u0441 OpenSSL support: enabled. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u044f cURL, \u0440\u0430\u0437\u0434\u0435\u043b \u0441 cURL support: enabled.

\u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u0437\u0430 \u043f\u0440\u043e\u043a\u0441\u0438. \u0415\u0441\u043b\u0438 \u0434\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Grav \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.

\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0432\u043e\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.

\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0443 \u0432\u0430\u0441 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043a GPM, \u043c\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 (\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Windows) \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 getgrav.org, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0440\u0435\u0439\u0442\u0438\u043d\u0433. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b system.gpm.verify_peer, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.

\u0415\u0441\u043b\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043d \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u043c\u0438 \u0438\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0441\u044e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u0447\u0430\u0442/\u0444\u043e\u0440\u0443\u043c.

\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 CLI, \u043e\u0442\u043a\u0440\u044b\u0432 SSH-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 bin/gpm index, \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 Admin \u0438\u043b\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0442\u043e\u0436\u0435.

"},{"location":"troubleshooting/common-problems/#interfeis-administratora-ne-prokruchivaetsia","title":"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0435 \u043f\u0440\u043e\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f","text":"

\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430

\u041f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0430\u0434\u043c\u0438\u043d\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043f\u0440\u043e\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f.

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d \u044d\u0442\u043e\u0433\u043e, \u043d\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435.

  • \u0416\u0435\u0441\u0442\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u0447\u0438\u0441\u0442\u0438\u0432 \u043a\u044d\u0448 \u0412\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u0438\u0432 \u0435\u0433\u043e.
  • \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0441\u0430\u043c\u0443\u044e \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Grav, \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u0441\u044c \u043d\u0430 \u044f\u0437\u044b\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e - \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043e \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043a\u0430\u043a \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435.
  • \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 CloudFlare \u0434\u043b\u044f HTTPS \u0438\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 CDN, \u0438\u0445 JS-\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043c\u043e\u0436\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 CloudFlare \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0434\u043e\u043c\u0435\u043d, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439:
    1. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u00abSpeed\u00bb \u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u0437 \u0434\u043e \u00abRocket loader\u00bb.
      • \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab\u0412\u044b\u043a\u043b.\u00bb, \u0418 CloudFlare \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u043e \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0432\u044b\u0433\u043e\u0434\u044b \u043e\u0442 \u0438\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438.
    2. \u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Grav, \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u00ab\u041f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\u00bb \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\u00bb.
      • \u0412 \u043f\u043e\u043b\u0435 \u00ab\u0415\u0441\u043b\u0438 URL \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442\u00bb \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043c\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u0432\u0435\u0434\u0438\u0442\u0435 /admin, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: example.com/admin.
      • \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443\u00bb \u0438 \u0432 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u0435 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 Rocket Loader. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 Select Value \u043d\u0430 off.
      • \u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 \u00ab\u041f\u043e\u0440\u044f\u0434\u043e\u043a\u00bb \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0430 First.
      • \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c\u00bb.

\u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0437 \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 JavaScript; \u0412 Chrome \u0438\u043b\u0438 Firefox \u043d\u0430\u0436\u043c\u0438\u0442\u0435 F12 \u0438\u043b\u0438 Ctrl + Shift + I, \u0437\u0430\u0442\u0435\u043c \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u00ab\u041a\u043e\u043d\u0441\u043e\u043b\u044c\u00bb. \u0421\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445.

"},{"location":"troubleshooting/common-problems/#ne-udalos-poluchit","title":"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c","text":"

\u0412\u043d\u0443\u0442\u0440\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043a\u0440\u0430\u0441\u043d\u043e\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u00abFetch Failed\u00bb. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c.

\u041d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, - \u044d\u0442\u043e mod_security, \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b Grav.

\u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u043d\u0430\u0439\u0434\u044f \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0432 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 mod_security \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u044f \u043a \u0441\u043b\u0443\u0447\u0430\u044e.

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 http://www.inmotionhosting.com/support/website/modsecurity/find-and-disable-specific-modsecurity-rulesestive, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0445\u043e\u0441\u0442\u0438\u043d\u0433-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c \u0438 \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.

\u0421\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: admin#951

"},{"location":"troubleshooting/common-problems/#zend-opcache-api-ogranichen","title":"Zend OPcache API \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 PHP \u0441 Zend OPache \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443, \u0442\u043e \u0432\u0430\u0448\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f OPCache [\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 OPcache API \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438] (https://php.net/manual/ru/opcache. configuration.php). \u0421\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 - \u043d\u0430\u0439\u0442\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u043b\u0438\u0431\u043e \u0432 \u0432\u0430\u0448\u0435\u043c \u0444\u0430\u0439\u043b\u0435 php.ini, \u043b\u0438\u0431\u043e \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 opcache.ini, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0430\u0448 \u043e\u0431\u0449\u0438\u0439 \u0444\u0430\u0439\u043b php.ini, \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:

opcache.restrict_api=\n

\u042d\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 ServerPilot \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c PHP 7.2. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0431\u044b\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0437\u0430\u043f\u0440\u043e\u0441.

"},{"location":"troubleshooting/common-problems/#rassharivanie-linkedin-i-indeksatsiia-wayback-machine-ne-rabotaiut","title":"\u0420\u0430\u0441\u0448\u0430\u0440\u0438\u0432\u0430\u043d\u0438\u0435 LinkedIn \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f Wayback Machine \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442","text":"

\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430

\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432 LinkedIn \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. Wayback Machine \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0441\u0436\u0430\u0442\u0438\u0435 WebServer Gzip \u0438\u043b\u0438 Gzip. \u041e\u0431\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043e\u0434\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445.

\u042d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0430\u0445. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0441 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 AWS \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0441\u043e \u0441\u0432\u043e\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 Grav \u0432 LinkedIn \u0438\u043b\u0438 \u0441 \u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Wayback Machine. \u042d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0440\u0435\u0448\u0435\u043d\u0430 \u043f\u0443\u0442\u0435\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0436\u0430\u0442\u0438\u044f WebServer Gzip \u0438\u043b\u0438 Gzip.

"},{"location":"troubleshooting/common-problems/#nevozmozhno-prokrutit-stranitsu-administratora-v-cloudflare","title":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 CloudFlare","text":"

\u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 CloudFlare \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f:

\u0412 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 CloudFlare \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 Rocket Loader (\u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b).

\u0415\u0433\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0440\u0435\u0436\u0438\u043c\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445:<script data-cfasync=\"false\" src=\"/javascript.js\"></script>.

\u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 URL example.com/staging/*/admin, \u0433\u0434\u0435 * \u2014 \u044d\u0442\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0437\u043d\u0430\u043a, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0439 \u043b\u044e\u0431\u043e\u0435 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438. \u0414\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 Rocket Loader \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 Off.

"},{"location":"troubleshooting/forbidden/","title":"\u0414\u043e\u0441\u0442\u0443\u043f \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u2014 403","text":""},{"location":"troubleshooting/forbidden/#dostup-zapreshchen-403","title":"\u0414\u043e\u0441\u0442\u0443\u043f \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u2014 403","text":"

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u044f\u0441\u043d\u0430\u044f, \u043d\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 Apache \u043d\u0430 Windows , \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0443 \u00ab403 forbidden\u00bb.

\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, Apache \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 : \u0432 URL-\u0430\u0434\u0440\u0435\u0441\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0438\u0437-\u0437\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 \u0442\u043e\u043c \u0444\u0430\u043a\u0442\u0435, \u0447\u0442\u043e \u043f\u0443\u0442\u0438 windows \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u0432 \u043d\u0438\u0445: C:\\some\\path.

\u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0432\u0435\u043d :

\u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 user/config/system.yaml \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e \u0432\u0432\u0435\u0440\u0445\u0443:

param_sep: ';'\n

\u042d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442 Grav \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439, \u0430 \u043d\u0435 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043c\u0435\u0441\u0442\u043e http://yoursite.com/blog/tag:something \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u0442 http://yoursite.com/blog/tag;something.

"},{"location":"troubleshooting/forbidden/#oshibka-403-v-adminke","title":"\u041e\u0448\u0438\u0431\u043a\u0430 403 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435","text":"

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d mod_security, \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0435 350147, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u043b\u043e\u0436\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432 \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430.

ModSecurity: [file \"/etc/httpd/conf/modsecurity.d/rules/tortix/modsec/50_plesk_basic_asl_rules.conf\"] [line \"308\"] [id \"350147\"] [rev \"143\"] [msg \"Protected by Atomicorp.com Basic Non-Realtime WAF Rules: Potentially Untrusted Web Content Detected\"] [data \"\"] [severity \"CRITICAL\"] Access denied with code 403 (phase 2). Match of \"rx ((?:submit(?:\\\\+| )?(request)?(?:\\\\+| )?>+|<<(?:\\\\+| )remove|(?:sign ?in|log ?(?:in|out)|next|modifier|envoyer|add|continue|weiter|account|results|select)?(?:\\\\+| )?>+)$|^< ?\\\\??(?: |\\\\+)?xml|^<samlp|^>> ?$)\" against \"ARGS:notifications\" required. [hostname \"mydomain\"] [uri \"/grav/admin/notifications.json/task:processNotifications\"] [unique_id \"WXoYHcpkEKz0qCI66845gQAAAAo\"], referer: http://mydomain/grav/admin/tools\n
"},{"location":"troubleshooting/htaccess/","title":".htaccess","text":""},{"location":"troubleshooting/htaccess/#htaccess","title":".htaccess","text":"

Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c .htaccess. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 Grav \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0435\u0433\u043e \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u0439\u043b\u0430 .htaccess.

Apache \u2014 \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0441\u0435\u0433\u043e\u0434\u043d\u044f. \u042d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0438 \u0448\u0438\u0440\u043e\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0435\u0437\u0434\u0435. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, Apache \u043d\u0435\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0435\u043d, \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u0444\u0430\u0439\u043b .htaccess \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0443 \u0432\u0430\u0441 \u0433\u043e\u043b\u043e\u0432\u043d\u0443\u044e \u0431\u043e\u043b\u044c. \u041d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c, \u044d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043c\u043e.

"},{"location":"troubleshooting/htaccess/#kak-redaktirovat-htaccess-v-windows-i-macos","title":"\u041a\u0430\u043a \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c .htaccess \u0432 Windows \u0438 macOS","text":"

\u0424\u0430\u0439\u043b .htaccess \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043a\u0440\u044b\u0442\u044b\u043c, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 macOS \u0438 Windows \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 (Finder), \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.

\u0412 macOS\u0412 Windows 10
  1. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 Terminal.
  2. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 defaults write com.apple.finder AppleShowAllFiles YES \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 return.
  3. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 killall Finder \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 return.

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0444\u0430\u0439\u043b .htaccess \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 Grav. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u0432\u0432\u0435\u0434\u044f NO \u0432 \u043a\u043e\u043d\u0446\u0435 \u0448\u0430\u0433\u0430 2 \u0432\u043c\u0435\u0441\u0442\u043e YES.

  1. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u041f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a.
  2. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0412\u0438\u0434.
  3. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0444\u043b\u0430\u0436\u043e\u043a \u0421\u043a\u0440\u044b\u0442\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.

\u0415\u0441\u043b\u0438 \u0441\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0436\u043e\u043a, \u044d\u0442\u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043d\u043e\u0432\u0430 \u0441\u043a\u0440\u044b\u0442\u044b, \u0430 \u041f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a \u0432\u0435\u0440\u043d\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.

"},{"location":"troubleshooting/htaccess/#testirovanie-htaccess","title":"\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 .htaccess","text":"

\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u0432 \u0441\u0432\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u043d\u0430 \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 Grav \u0438 ... \u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435\u0442! \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0436\u0438\u0440\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043d\u0430\u0434\u043f\u0438\u0441\u044c\u044e Not Found - \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u0448 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 Grav. \u042d\u0442\u043e \u043d\u0435 \u0437\u0430\u0431\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u043c, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430 .htaccess.

\u041f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0432 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0444\u0430\u0439\u043b\u043e\u043c .htaccess \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0444\u0430\u0439\u043b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav, \u0433\u0434\u0435 \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c, \u0438 \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d .htaccess \u0441 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 (.).

\u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u0435\u0441\u0442\u044c, \u0432\u0430\u0448 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 - \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0435\u0433\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430.

\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b .htaccess \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435. \u0417\u0430\u0442\u0435\u043c \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442 Test \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c.

\u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0430\u0448\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0444\u0430\u0439\u043b .htaccess \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav - \u044d\u0442\u043e \u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440.

\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0444\u0430\u0439\u043b, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav. \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 Grav \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432 \u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u043c\u0438, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.

"},{"location":"troubleshooting/htaccess/#ustranenie-nepoladok-s-povrezhdennym-htaccess","title":"\u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a \u0441 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u043d\u044b\u043c .htaccess","text":"

\u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 .htaccess, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d .htaccess. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0435\u0433\u043e \u0438\u0441\u043a\u0430\u0442\u044c.

\u0412\u043e\u0442 \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c:

\u041d\u0430\u0439\u0434\u0438\u0442\u0435 \u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b httpd.conf \u0438\u043b\u0438 apache.conf \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435. \u0412 Windows \u044d\u0442\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u0411\u043b\u043e\u043a\u043d\u043e\u0442 \u0438\u043b\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0435\u043d\u0443\u0436\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0443\u0433\u0443\u0431\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.

\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u044c Directory. \u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0431\u043b\u043e\u043a \u0442\u0435\u043a\u0441\u0442\u0430:

#\n# AllowOverride controls what directives may be placed in .htaccess files.\n# It can be \"All\", \"None\", or any combination of the keywords:\n#   Options FileInfo AuthConfig Limit\n#\nAllowOverride All\n

\u0415\u0441\u043b\u0438 \u0434\u043b\u044f AllowOverride \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 None \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u0440\u043e\u043c\u0435 All, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 All \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c. \u042d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Apache \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438.

\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442\u0435, \u0434\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0442\u0435\u0441\u0442.

\u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0442\u0435\u0441\u044c \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 404 \u0438\u043b\u0438 500 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Grav.

"},{"location":"troubleshooting/internal-server-error/","title":"\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2014 500","text":""},{"location":"troubleshooting/internal-server-error/#vnutrenniaia-oshibka-servera-500","title":"\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2014 500","text":"

\u0421\u0435\u0440\u0432\u0435\u0440 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0438 \u043d\u0435 \u0441\u043c\u043e\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0430\u0448 \u0437\u0430\u043f\u0440\u043e\u0441.

\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 webmaster@localhost, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0435\u043c\u0443 \u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.

\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430. Apache/2.4.7 Server \u043d\u0430 localhost Port 80

\u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c\u0438:

  • \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (httpd.conf)
  • \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 htaccess
  • mod_security \u0438\u043b\u0438 \u043f\u043e\u0445\u043e\u0436\u0438\u0435
"},{"location":"troubleshooting/internal-server-error/#proverte-rabotosposobnost-php","title":"\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c PHP","text":"

\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e PHP \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0438 Grav \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (\u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0435\u0433\u043e \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438!) \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c info.php. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 PHP \u043a\u043e\u0434:

<?php phpinfo();\n

\u0417\u0430\u0442\u0435\u043c \u043d\u0430\u0432\u0435\u0434\u0438\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b: http://yoursite.com/your_grav_directory/info.php. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043e\u0442\u0447\u0451\u0442\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 PHP, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.

"},{"location":"troubleshooting/internal-server-error/#proverte-razresheniia","title":"\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f","text":"

\u041e\u0448\u0438\u0431\u043a\u0430 500 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c

"},{"location":"troubleshooting/internal-server-error/#sozdat-issue","title":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c issue","text":"

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u044e\u0434\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0434\u043e PHP 5.5 \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 5.4 \u0438\u043b\u0438 5.3, \u0432\u0441\u0451 \u0435\u0449\u0451 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u0444\u0430\u0439\u043b\u0435 php.ini. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 500, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 register_globals. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0438\u043b\u0438 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443:

register_global = On\n

\u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 Apache.

"},{"location":"troubleshooting/internal-server-error/#threadstacksize-v-windows","title":"ThreadStackSize \u0432 Windows","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Windows, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 500 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 ThreadStackSize \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b. \u041f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u043a\u043e\u043d\u0435\u0446 \u0432\u0430\u0448\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430 httpd.conf:

<IfModule mpm_winnt_module>\n  ThreadStackSize 8388608\n</IfModule>\n

\u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 Apache.

"},{"location":"troubleshooting/internal-server-error/#options-indexes","title":"Options -Indexes","text":"

Grav \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 -Indexes, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043f\u0430\u043f\u043e\u043a. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0445\u043e\u0441\u0442\u0430\u043c \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0447\u0442\u043e Apache .htaccess \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 Options.

\u041c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u043e\u0442\u0447\u0451\u0442\u044b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0444\u0430\u0439\u043b\u0435 Grav .htaccess, \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438:

# Prevent file browsing\n#Options -Indexes\n
"},{"location":"troubleshooting/internal-server-error/#problemy-s-rewritebase","title":"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 RewriteBase","text":"

\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 500 \u0431\u0435\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 RewriteBase? \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c

# RewriteBase /\n

\u043d\u0430

RewriteBase /\n
"},{"location":"troubleshooting/internal-server-error/#navigatsiia-v-paneli-adminki","title":"\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438","text":"

\u041f\u0440\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 Grav \u0432 \u043b\u0435\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u043f\u0430\u043f\u043a\u0438 /cache.

\u0415\u0441\u043b\u0438 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0430\u043f\u043a\u0438 /cache, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0451 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438. \u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u043d\u0438\u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 Grav \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.

sudo chmod 755 cache/ -R\n
"},{"location":"troubleshooting/invalid-security-token/","title":"\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438","text":""},{"location":"troubleshooting/invalid-security-token/#nevernyi-token-bezopasnosti","title":"\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438","text":"

\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430

\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.

\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0435\u0430\u043d\u0441\u043e\u043c:

  • \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d.
  • \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043a\u0443\u043a\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0439\u0442\u0438 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0432\u043e\u0439\u0442\u0438.
  • \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 SSL \u0438 HTTPS URL, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 session.secure: true \u0432 \u0444\u0430\u0439\u043b\u0435 system.yaml Grav (\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u043a\u0435).
  • \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432 PHP \u0437\u0430\u0434\u0430\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 tmp. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 PHP \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 Grav system.yaml session.path (\u0435\u0433\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0430\u0434\u043c\u0438\u043d\u043a\u0443 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b) \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435
  • \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u0435\u0440\u043d\u0430 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435
"},{"location":"troubleshooting/page-not-found/","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u2014 404","text":""},{"location":"troubleshooting/page-not-found/#stranitsa-ne-naidena-404","title":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u2014 404","text":"

\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e, \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043d\u0438\u0445 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438.

\u041f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0443 Apache, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\u043c..

"},{"location":"troubleshooting/page-not-found/#iis-ispolzovanie-faila-htaccess","title":"IIS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 .htaccess","text":"

\u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f URL Rewrite \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 IIS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u0432\u0435\u0431-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 IIS. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f IIS, \u0434\u0432\u0430\u0436\u0434\u044b \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u00ab\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0430\u00bb, \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\u00bb \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u00ab\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u0430\u00bb, \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430\u00bb \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u0444\u0430\u0439\u043b\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0432\u044b\u0431\u0440\u0430\u0432 \u0444\u0430\u0439\u043b .htaccess \u0432 \u043a\u043e\u0440\u043d\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u00ab\u0418\u043c\u043f\u043e\u0440\u0442\u00bb. \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 IIS. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a Grav \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441.

"},{"location":"troubleshooting/page-not-found/#otsutstvuiushchii-fail-htaccess","title":"\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b .htaccess","text":"

\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u044d\u0442\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 .htaccess \u0432 \u043a\u043e\u0440\u043d\u0435 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u0439 \u0444\u0430\u0439\u043b, \u0432\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u043e\u043a\u043d\u0430\u0445 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0430 \u0438\u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u0435\u043b\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0437\u0432\u043b\u0435\u043a\u043b\u0438 Grav, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u043b\u0438 \u0438\u043b\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0444\u0430\u0439\u043b\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u044d\u0442\u043e\u0442 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e\u0437\u0430\u0434\u0438.

\u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c Grav \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u044e \u043f\u0430\u043f\u043a\u0443 \u043d\u0430 \u043c\u0435\u0441\u0442\u043e, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442 \u0441\u0432\u043e\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438.

"},{"location":"troubleshooting/page-not-found/#allowoverride-all","title":"AllowOverride All","text":"

\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 Grav \u0444\u0430\u0439\u043b .htaccess \u043c\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438, Apache \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0444\u0430\u0439\u043b. \u041a\u043e\u0433\u0434\u0430 \u0432\u0430\u0448\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 <Directory> \u0438\u043b\u0438 <VirtualHost> \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e AllowOverride None, \u0444\u0430\u0439\u043b .htaccess \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u0421\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 - \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u043d\u0430 AllowOverride All. \u0433\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f RewriteRule, FollowSymLinks \u0438\u043b\u0438 SymLinksIfOwnerMatch \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0435 Options. \u041f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0435 +FollowSymlinks \u043f\u043e\u0441\u043b\u0435 Options.

\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e AllowOverride \u0438 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Apache.

"},{"location":"troubleshooting/page-not-found/#problema-rewritebase","title":"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 RewriteBase","text":"

\u0415\u0441\u043b\u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 Grav \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u044d\u0442\u0443 \u043e\u0447\u0435\u043d\u044c \u0433\u0440\u0443\u0431\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 Apache-style, \u0442\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0432\u0430\u0448\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c .htaccess.

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0444\u0430\u0439\u043b .htaccess, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Grav, \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441 \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430. \u0412 \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 RewriteBase \u0432 .htaccess, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c.

\u0412 \u0441\u0430\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435 .htaccess \u0435\u0441\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435:

##\n# If you are getting 404 errors on subpages, you may have to uncomment the RewriteBase entry\n# You should change the '/' to your appropriate subfolder. For example if you have\n# your Grav install at the root of your site '/' should work, else it might be something\n# along the lines of: RewriteBase /<your_sub_folder>\n##\n\n# RewriteBase /\n

\u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b # \u043f\u0435\u0440\u0435\u0434 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439 RewriteBase/, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0435, \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043f\u0443\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e \u0441\u0440\u0435\u0434\u043e\u0439 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.

\u041c\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043d\u0430\u0439\u0442\u0438 \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0444\u0430\u0439\u043b\u043e\u043c .htaccess, \u0432 \u043d\u0430\u0448\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e htaccess.

"},{"location":"troubleshooting/page-not-found/#otsutstvuiushchie-moduli-rewrite","title":"\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 Rewrite","text":"

\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 (\u044f \u0441\u043c\u043e\u0442\u0440\u044e \u043d\u0430 \u0432\u0430\u0448\u0438 EasyPHP \u0438 WAMP!) \u041d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c Apache rewrite, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041e\u0431\u044b\u0447\u043d\u043e \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f Apache, \u0438\u043b\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 httpd.conf, \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 (\u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435), \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b Apache:

#LoadModule rewrite_module modules/mod_rewrite.so\n

\u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 Apache.

"},{"location":"troubleshooting/page-not-found/#testovyi-skript-htaccess","title":"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 .htaccess","text":"

\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 .htaccess \u0438 rewrite, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b htaccess_tester.php \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 Grav.

\u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 http://yoursite.com/htaccess_tester.php. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 .htaccess.

\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438, \u0441\u043e\u0437\u0434\u0430\u0432 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430 .htaccess:

mv .htaccess .htaccess-backup\n

\u0410 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b .htaccess:

<IfModule mod_rewrite.c>\n    RewriteEngine On\n    RewriteRule ^.*$ htaccess_tester.php\n</IfModule>\n

\u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 URL: http://yoursite.com/test. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043b\u044e\u0431\u043e\u0439 \u043f\u0443\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435, \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438, \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0449\u0435\u0435 \u0432\u0430\u043c, \u0447\u0442\u043e mod_rewrite \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.

\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b .htaccess:

rm htaccess_tester.php\nmv .htaccess-backup .htaccess\n
"},{"location":"troubleshooting/page-not-found/#vstroennaia-stranitsa-oshibki-404","title":"\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 404","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 Grav-style \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c \u041e\u0448\u0438\u0431\u043a\u0430 404, \u0437\u043d\u0430\u0447\u0438\u0442, \u0432\u0430\u0448 .htaccess \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043d\u043e \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e Grav \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438.

\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u044d\u0442\u043e\u0433\u043e - \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u044d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b slug \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 YAML \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u044f\u0432\u043d\u043e\u0435 \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f URL-\u0430\u0434\u0440\u0435\u0441\u0430.

\u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0430\u0448\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.

"},{"location":"troubleshooting/page-not-found/#404-page-not-found-na-nginx","title":"404 Page Not Found \u043d\u0430 Nginx","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448 nginx.conf \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u044d\u0442\u0443 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443. \u041e\u0431\u0440\u0430\u0437\u0435\u0446 nginx.conf \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0432 \u043a\u043e\u0434\u0435, \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u0439, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.

"},{"location":"troubleshooting/permissions/","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f","text":""},{"location":"troubleshooting/permissions/#razresheniia","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f","text":"

\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u043b\u0438 \u043d\u0435 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 PHP (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440), \u0438\u043b\u0438, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0434\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435/\u0437\u0430\u043f\u0438\u0441\u044c \u043a \u044d\u0442\u0438\u043c \u0444\u0430\u0439\u043b\u0430\u043c.

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u0435, \u0441 \u043a\u0430\u043a\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Apache \u0438\u043b\u0438 Nginx, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:

ApacheNginx
ps aux | grep -v root | grep apache | cut -d\\  -f1 | sort | uniq\n
ps aux | grep -v root | grep nginx | cut -d\\  -f1 | sort | uniq\n

\u0418 \u0443\u0437\u043d\u0430\u0439\u0442\u0435, \u043a\u0430\u043a\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0444\u0430\u0439\u043b \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 grav, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432

ls -l\n

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Grav \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 CMS, \u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u044d\u0448\u0430 \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432. \u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f:

  1. PHP/\u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0442\u0435\u043c \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442 \u0444\u0430\u0439\u043b\u044b (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f) \u042d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u0432 \u0431\u043b\u043e\u0433\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e MacOS Yosemite, Apache \u0438 PHP, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c Apache \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u043a \u0432\u0430\u0448\u0430 \u043b\u0438\u0447\u043d\u0430\u044f \u0443\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0432\u0435\u0431-\u0445\u043e\u0441\u0442\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0438\u043b\u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.

  2. PHP/\u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0443\u0447\u0435\u0442\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438, \u043d\u043e \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u0431\u0449\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u0448\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e PHP/\u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 775 \u0438 664, \u0432\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0435, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u043e\u0431\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435/\u0437\u0430\u043f\u0438\u0441\u044c \u043a \u0444\u0430\u0439\u043b\u0430\u043c. \u0412\u0430\u043c \u0442\u0430\u043a\u0436\u0435, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 umask 0002, \u0447\u0442\u043e\u0431\u044b \u043d\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438.

  3. \u0420\u0430\u0437\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c PHP/\u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c/\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.

\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 \u0441 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439:

#!/bin/sh\nchown -R joeblow:staff .\nfind . -type f -exec chmod 664 {} \\;\nfind ./bin -type f -exec chmod 775 {} \\;\nfind . -type d -exec chmod 775 {} \\;\nfind . -type d -exec chmod +s {} \\;\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u044d\u0442\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:

  1. \u0418\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 \u043d\u0430 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 joeblow \u0438 staff
  2. \u041d\u0430\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043d\u0438\u0436\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 664, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 RW \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u0438 R \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445.
  3. \u041d\u0430\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u043f\u0430\u043f\u043a\u0438 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043d\u0438\u0436\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 775, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u043d\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f RWX \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0433\u0440\u0443\u043f\u043f\u044b \u0438 RX \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445.
  4. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0433\u0440\u0443\u043f\u043f.
"},{"location":"troubleshooting/permissions/#razresheniia-papki-kesha-izobrazhenii","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0430\u043f\u043a\u0438 \u043a\u044d\u0448\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439","text":"

\u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u043f\u0430\u043f\u043a\u0435 \u043a\u044d\u0448\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u0432 \u0444\u0430\u0439\u043b\u0435 user/config/system.yaml,

images:\n  cache_perms: '0775'\n

\u0435\u0441\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e images \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u0435\u0433\u043e \u043a\u043e\u043d\u0435\u0446 cache_perms: 0775.

\u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b setup.php \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 Grav (\u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 index.php), \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0442\u0443\u0434\u0430

<?php\numask(0002);\n

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b setup.php, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432, \u043d\u043e, \u0431\u0443\u0434\u0443\u0447\u0438 \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 Grav, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0446\u0435\u043b\u0435\u0439.

"},{"location":"troubleshooting/permissions/#sovmestnyi-khosting-s-saitom-wordpress","title":"\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0441 \u0441\u0430\u0439\u0442\u043e\u043c WordPress","text":"

\u0412 \u043e\u0431\u0449\u0435\u043c, Grav \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 WordPress, \u0438 \u0434\u0432\u0435 CMS \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0441\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. (\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Base Rewrite \u0432 htaccess \u043f\u0430\u043f\u043a\u0438 Grav.) \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043a\u044d\u0448\u0430 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443 \u0438/\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 Grav, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043b\u0438 WP-Engine \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 WordPress. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u0438\u0445 \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0430\u043f\u043a\u0438 Grav \u0438\u0437 \u0438\u0445 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u044d\u0448\u0430.

"},{"location":"troubleshooting/permissions/#sovet-dlia-selinux","title":"\u0421\u043e\u0432\u0435\u0442 \u0434\u043b\u044f SELinux","text":"

\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 Grav \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:

chcon -Rv system_u:object_r:httpd_sys_rw_content_t:s0 ./\n

\u0421\u0441\u044b\u043b\u043a\u0438:

  • https://unix.stackexchange.com/questions/337704/selinux-is-preventing-nginx-from-writing-via-php-fpm
  • https://github.com/getgrav/grav/issues/912#issuecomment-227627196
  • https://stopdisablingselinux.com
  • https://stackoverflow.com/questions/28786047/failed-to-open-stream-on-file-put-contents-in-php-on-centos-7
  • https://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/
"},{"location":"troubleshooting/proxy/","title":"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u0440\u043e\u043a\u0441\u0438","text":""},{"location":"troubleshooting/proxy/#problemy-s-proksi","title":"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u0440\u043e\u043a\u0441\u0438","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 GPM \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043a\u0441\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043e\u0448\u0438\u0431\u043a\u0435.

cURL \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f (http_proxy \u0438 https_proxy) \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0432 Grav.

\u0421\u043c. https://stackoverflow.com/questions/7559103/how-to-setup-curl-to-permanently-use-a-proxy

\u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430, \u0435\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d fopen, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0432 allow_url_fopen \u0447\u0435\u0440\u0435\u0437 php.ini.

\u042d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d fopen, Grav \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0440\u0445 curl.

"},{"location":"troubleshooting/server-error/","title":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","text":""},{"location":"troubleshooting/server-error/#oshibka-servera","title":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","text":"

\u041e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 Grav. \u0421\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0435, \u0438 \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e CMS \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.

\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Production, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u0421\u0430\u043c\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 logs/grav.log. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0437\u0443\u0447\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u043e\u0447\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u043e\u0448\u0438\u0431\u043a\u0438.

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f:

  • \u041e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u044b\u0437\u0432\u0430\u043d\u044b \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439
  • \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 Grav \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435
  • \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 Grav \u0435\u0449\u0451 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442
  • \u041e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432

\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u043b\u0430\u0433\u0438\u043d Grav Admin, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043e\u0442\u0442\u0443\u0434\u0430. \u0429\u0435\u043b\u043a\u043d\u0443\u0432 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043e\u0448\u0438\u0431\u043a\u0430\u043c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0431\u044b\u043b \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d.

"},{"location":"troubleshooting/server-error/#ustarevshaia-konfiguratsiia","title":"\u0423\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"

\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430:

bin/grav clear-cache\n

\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u044d\u0442\u043e\u0439.

"},{"location":"troubleshooting/server-error/#problemy-s-ustanovkoi-i-nastroikoi","title":"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439","text":"
  • \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435
  • \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435
  • \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439
  • \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
"},{"location":"webservers-hosting/deploying-with-git/","title":"\u0420\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Git","text":""},{"location":"webservers-hosting/deploying-with-git/#razvertyvanie-s-pomoshchiu-git","title":"\u0420\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Git","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 Git \u0432 \u0441\u0432\u043e\u0438\u0445 \u0441\u0440\u0435\u0434\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 Git, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Github \u0438\u043b\u0438 GitLab. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u044d\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Git'\u043e\u043c \u0438 \u0435\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.

\u0415\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442: * \u044d\u0442\u043e \u0447\u0438\u0449\u0435: \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0438 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u043b\u044e\u0431\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 * \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435: \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u044d\u0441\u043a\u0430\u043b\u0438\u0440\u0443\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u044b (\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0430\u0445) * \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c: \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f (\"origin\") \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u0432\u0435\u0440\u0441\u0438\u043e\u043d\u043d\u044b\u0445) \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e; \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 (issues).

"},{"location":"webservers-hosting/deploying-with-git/#nastroika","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430","text":"

\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Git \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0412\u043e\u0442 \u043e\u0431\u0449\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0445\u043e\u0442\u0438\u0442\u0435 \u043b\u0438 \u0432\u044b \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043a\u043e\u0434, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 plugins, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0448\u0430\u0433\u043e\u0432 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435.

  • \u0412 \u0432\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0430\u043f\u043a\u0430 user \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u043c.
  • \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u0430\u043f\u043e\u043a user \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043e \u0432 \u043e\u0431\u043b\u0430\u043a\u0435. \u0412\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0441\u043e \u0432\u0441\u0435\u043c \u043c\u0438\u0440\u043e\u043c.
  • \u0412\u0430\u0448\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \"\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439\" \u043a\u043e\u043f\u0438\u0435\u0439 \u0432\u0430\u0448\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b origin.
  • \u0412\u043d\u043e\u0441\u0438\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442 Grav \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b \u0432 origin \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 Git.
  • \u041d\u0430 \u0432\u0430\u0448\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Grav, \u0438 \u0435\u0433\u043e \u043f\u0430\u043f\u043a\u0430 user \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u043e\u043d\u043e\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430.
  • \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0430\u0439\u0442 Grav \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 Git \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0438\u0437 origin \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430.
"},{"location":"webservers-hosting/deploying-with-git/#obnovleniia","title":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f","text":"

\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f: * \u0437\u0430\u043f\u0443\u0448\u0438\u0442\u044c \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u044b, * \u0437\u0430\u043f\u0443\u043b\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.

"},{"location":"webservers-hosting/deploying-with-git/#rasshirenie-vashei-ustanovki","title":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438","text":"

\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0445\u0443\u043a\u0438 Git \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0431\u0445\u0443\u043a\u0438 Github. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043e\u0442 \u0432\u0435\u0431-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0432\u043d\u043e\u0441\u044f\u0449\u0438\u0445 \u043f\u0440\u0430\u0432\u043a\u0438 \u0432 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0435\u0441\u0442\u0438 (\u043f\u043e\u0447\u0442\u0438) \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u0441\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0442\u043a\u0438 Git.

\u0418\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0432\u0441\u0435 \u0432\u0438\u0434\u044b \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0439 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u0440\u0435\u0434\u0430\u043c\u0438.

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Git \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Git Sync plugin, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043c\u043e\u0433\u043b\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.

\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430 .gitignore \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0430\u043f\u043a\u0438 user. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0447\u0438\u0441\u0442\u043e\u0442\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f:

accounts/*\n!accounts/.*\ndata/*\n!data/.*\nlanguages/*\n!languages/.*\nplugins/*\n!plugins/.*\nthemes/*\n!themes/.*\n!themes/MY_CUSTOM_THEME/\n**/config/security.yaml\n

\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0438\u043b\u0438 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 MY_CUSTOM_THEME \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0439 \u0442\u0435\u043c\u044b. \u041f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430.

"},{"location":"webservers-hosting/local-development-with-ddev/","title":"\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441 ddev","text":""},{"location":"webservers-hosting/local-development-with-ddev/#lokalnaia-razrabotka-s-ddev","title":"\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441 ddev","text":"

ddev \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 PHP \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Docker. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430, \u0430 \u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Drupal, ddev \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0441\u0430\u0439\u0442\u044b Drupal, Wordpress \u0438 GravCMS. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 Docker, ddev \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Windows, Mac \u0438 Linux.

"},{"location":"webservers-hosting/local-development-with-ddev/#ustanovka-ddev","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 ddev","text":"

\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e ddev \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435.

"},{"location":"webservers-hosting/local-development-with-ddev/#konfiguratsiia","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"
  • \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0444\u0430\u0439\u043b\u044b Grav \u0432 \u043f\u0430\u043f\u043a\u0443 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 (/home/USER/projects/grav).
  • \u0412 \u0432\u0430\u0448\u0435\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442-\u0434\u0438\u0441\u043a \u0432 \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443 cd /home/USER/projects/grav
  • \u0412\u0432\u0435\u0434\u0438\u0442\u0435 ddev config. \u041d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438:
    • \u0418\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u043f\u0430\u043f\u043a\u0438 [GRAV_ROOT]
    • \u041f\u0443\u0442\u044c \u043a Docroot (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f [GRAV_ROOT])
    • \u0422\u0438\u043f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u0438\u043f php \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0438)
  • \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 ddev start \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 [GRAV_ROOT].
  • \u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 ddev \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. \u0414\u043b\u044f \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0445\u043e\u0441\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 Root/Sudo.
"},{"location":"webservers-hosting/local-development-with-ddev/#zamechanie-o-ddev-i-plagine-feed","title":"\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e ddev \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 Feed","text":"

\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e ddev \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 nginx, \u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0442 18 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2020 \u0433\u043e\u0434\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d Feed, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:

  • \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 [GRAV_ROOT]/.ddev/nginx_full/nginx-site.conf
  • \u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 3, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c\u0438 (#ddev-generated)
  • \u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 58-62, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442 RSS \u0438 Atom (# Expire rules for static content ...)
  • \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 ddev restart, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e nginx.

\u041d\u0435\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435 HTTP 404 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c RSS \u0438\u043b\u0438 Atom-\u043a\u0430\u043d\u0430\u043b\u044b.

"},{"location":"webservers-hosting/local-development-with-ddev/#ispolzovanie-ddev","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 ddev","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u044d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 [GRAV_ROOT] \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435:

  • ddev describe - \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0441\u043b\u0443\u0436\u0431
  • ddev ssh - \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u043a \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0432 \u043a\u043e\u0440\u043d\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430
  • ddev exec params - \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043a\u043e\u0440\u043d\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ddev exec bin/grav clear \u0447\u0442\u043e\u0431\u044b \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043a\u044d\u0448)

\u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 [\u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d/ \u0442\u0435\u043c\u0443 \u0437\u0434\u0435\u0441\u044c]. \u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a bin/gpm?

\u0418\u0437 [GRAV_ROOT] \u0432\u0432\u0435\u0434\u0438\u0442\u0435 ddev ssh, \u0438 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0432 docroot. \u041e\u0442\u0441\u044e\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 php (composer, bin/gpm, bin/grav \u0438 \u0442. \u0434.).

\u0413\u0434\u0435 \u044f \u043c\u043e\u0433\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b?

\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043d\u0430 \u0445\u043e\u0441\u0442-\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 [GRAV_ROOT]. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 ddev. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, bin/gpm install admin), \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u044b \u043d\u0430 \u0445\u043e\u0441\u0442-\u043c\u0430\u0448\u0438\u043d\u0435."},{"location":"webservers-hosting/php-built-in-web-server/","title":"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c PHP","text":""},{"location":"webservers-hosting/php-built-in-web-server/#testovyi-khosting-so-vstroennym-veb-serverom-php","title":"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c PHP","text":"

\u041a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 PHP (CLI SAPI) \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0430\u0439\u0442\u0430 Grav. \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u043e\u043d \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.

"},{"location":"webservers-hosting/php-built-in-web-server/#ispolzovanie-veb-servera-cli","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 CLI","text":"
  1. \u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 [GRAV_ROOT].
  2. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 php -S localhost:8080 system/router.php. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0442\u0432\u0435\u0442, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0438\u0436\u0435.
php -S localhost:8080 system/router.php\nPHP 7.3.27 Development Server started at Thu Jun 17 09:24:46 2021\nListening on http://localhost:8080\nDocument root is /Users/somerandom/Desktop/quick-grav-test\nPress Ctrl-C to quit.\n
  1. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 URL-\u0430\u0434\u0440\u0435\u0441\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: http://localhost:8080/.
  2. \u0427\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Ctrl-C.
"},{"location":"webservers-hosting/php-built-in-web-server/#oshibka-adres-uzhe-ispolzuetsia","title":"\u041e\u0448\u0438\u0431\u043a\u0430 \"\u0410\u0434\u0440\u0435\u0441 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f\"","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \"\u0410\u0434\u0440\u0435\u0441 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f\" \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b php -S, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u043d\u043e\u043c\u0435\u0440\u0435 \u043f\u043e\u0440\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, :8080). \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, :8181) \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.

"},{"location":"webservers-hosting/php-built-in-web-server/#otobrazhenie-zhurnala-v-rezhime-realnogo-vremeni","title":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438","text":"

\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 CLI \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0436\u0443\u0440\u043d\u0430\u043b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u043a\u0430 \u0432\u044b \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0435 \u0441\u0430\u0439\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.

PHP 7.3.27 Development Server started at Thu Jun 17 09:24:46 2021\nListening on http://localhost:8080\nDocument root is /Users/somerandom/Desktop/quick-grav-test\nPress Ctrl-C to quit.\n[Thu Jun 17 09:26:15 2021] 127.0.0.1:63965 [200]: /\n[Thu Jun 17 09:26:15 2021] 127.0.0.1:64007 [200]: /assets/fd2c5827e1f18bb54d20265f4fc56b59.css?g-74e4c5a3\n[Thu Jun 17 09:26:15 2021] 127.0.0.1:64008 [200]: /assets/d87a2d24fae663a8c55e144c963a1915.js?g-74e4c5a3\n[Thu Jun 17 09:26:15 2021] 127.0.0.1:64014 [200]: /assets/1d8c5ea92966046d4649472f1630a253.js?g-74e4c5a3\n[Thu Jun 17 09:26:16 2021] 127.0.0.1:64024 [200]: /user/images/navigation/logo_small.png\n[Thu Jun 17 09:26:16 2021] 127.0.0.1:64028 [200]: /user/images/navigation/bgdark.svg\n[Thu Jun 17 09:26:16 2021] 127.0.0.1:64030 [200]: /user/images/navigation/bglight_50.png\n[Thu Jun 17 09:26:16 2021] 127.0.0.1:64032 [200]: /user/images/navigation/brand.svg\n
"},{"location":"webservers-hosting/php-built-in-web-server/#dopolnitelnaia-informatsiia","title":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f","text":"

\u041f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 PHP, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0435.

"},{"location":"webservers-hosting/servers/grav-built-in/","title":"\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 Grav","text":""},{"location":"webservers-hosting/servers/grav-built-in/#vstroennyi-veb-server-grav","title":"\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 Grav","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Grav, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430/\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 PHP, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c PHP.

\u0412\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043a\u043e\u0440\u043d\u044e \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 bin/grav server.

\u0425\u043e\u0442\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u044d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c PHP, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Symfony CLI, \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442 SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c https:// \u0438 PHP-FPM \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.

\u0412\u0432\u043e\u0434 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443:

\u279c bin/grav server\n\nGrav Web Server\n===============\n\nTailing Web Server log file (/Users/joeblow/.symfony/log/96e710135f52930318e745e901e4010d0907cec3.log)\nTailing PHP-FPM log file (/Users/joeblow/.symfony/log/96e710135f52930318e745e901e4010d0907cec3/53fb8ec204547646acb3461995e4da5a54cc7575.log)\nTailing PHP-FPM log file (/Users/joeblow/.symfony/log/96e710135f52930318e745e901e4010d0907cec3/53fb8ec204547646acb3461995e4da5a54cc7575.log)\n\n[OK] Web server listening\nThe Web server is using PHP FPM 8.0.8\nhttps://127.0.0.1:8000\n\n\n[Web Server ] Jul 30 14:54:53 |DEBUG  | PHP    Reloading PHP versions\n[Web Server ] Jul 30 14:54:54 |DEBUG  | PHP    Using PHP version 8.0.8 (from default version in $PATH)\n[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    fpm is running, pid 64992\n[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    ready to handle connections\n[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    fpm is running, pid 64992\n[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    ready to handle connections\n[Web Server ] Jul 30 14:54:54 |INFO   | PHP    listening path=\"/usr/local/Cellar/php/8.0.8_2/sbin/php-fpm\" php=\"8.0.8\" port=65140\n[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    fpm is running, pid 73709\n[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    ready to handle connections\n[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    fpm is running, pid 73709\n[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    ready to handle connections\n

\u0412\u0430\u0448 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0430\u043c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 [OK] Web server listening, \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u0430\u0439\u0442\u0443, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0430\u0434\u043c\u0438\u043d\u043a\u0443.

https://127.0.0.1:8000\n

\u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u0430\u043a Apache \u0438\u043b\u0438 Nginx.

"},{"location":"webservers-hosting/servers/nginx/","title":"Nginx","text":""},{"location":"webservers-hosting/servers/nginx/#nginx","title":"Nginx","text":"

Nginx - \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043f\u0440\u043e\u043a\u0441\u0438. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043e \u0438\u0437-\u0437\u0430 \u0441\u0432\u043e\u0435\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\u043d\u043e\u0439 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439. Nginx \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439. \u041a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u043d\u0438\u043a\u043e\u043c, \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0433\u0434\u0435 \u043e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u043c\u0438. \u0412\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041a\u043e\u0433\u0434\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u0446\u0438\u043a\u043b\u0430. \u0422\u0430\u043a\u043e\u0439 \u0441\u0442\u0438\u043b\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 Nginx \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445.

"},{"location":"webservers-hosting/servers/nginx/#trebovaniia","title":"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f","text":"

\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Grav \u0441 Nginx \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 PHP-FPM (FastCGI Process Manager) \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 PHP, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440:

  • nginx
  • php-fpm
"},{"location":"webservers-hosting/servers/nginx/#konfiguratsiia","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 Nginx \u0438 \u0435\u0449\u0451 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u043e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430\u0445/\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0431\u043b\u043e\u043a\u0430, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043f\u043e Nginx: \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u044b \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0438 \u0420\u0430\u0437\u0434\u0430\u0447\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.

\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0430\u0448\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Nginx \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 /etc/nginx/, \u0430 \u0432\u0430\u0448\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Grav \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 /var/www/grav/. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0431\u043b\u043e\u043a http, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0431\u0449\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c, \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c Nginx, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043b\u043e\u043a\u043e\u0432 server \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430. \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2014 \u044d\u0442\u043e nginx.conf \u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0431\u043b\u043e\u043a http, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (\u0431\u043b\u043e\u043a\u0438 server) \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 sites-available \u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 sites-enabled.

"},{"location":"webservers-hosting/servers/nginx/#prava-dostupa-k-failam","title":"\u041f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c","text":"

\u041a\u0430\u0442\u0430\u043b\u043e\u0433 /var/www \u0438 \u0432\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435\u0441\u044f \u0432 \u043d\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0430\u043f\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442\u044c $USER: www-data (\u0438\u043b\u0438 \u043a\u0430\u043a \u0442\u0430\u043c \u0432\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f/\u0433\u0440\u0443\u043f\u043f\u0443 Nginx). \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0423\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a / \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c \u0434\u043b\u044f Grav, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043e\u0431\u0449\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u044b. \u041f\u043e \u0441\u0443\u0442\u0438, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e 775 \u0434\u043b\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0438 664 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 Grav, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 Grav \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0431\u044f. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 www-data, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u0430\u043c, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c Grav/Nginx.

"},{"location":"webservers-hosting/servers/nginx/#primer-nginx-conf","title":"\u041f\u0440\u0438\u043c\u0435\u0440 nginx.conf","text":"

\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0444\u0430\u0439\u043b\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e /etc/nginx/nginx.conf, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 github.com/h5bp/server-configs-nginx. \u0421\u043c. \u0438\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c Nginx \u0438 \u041c\u043e\u0434\u0443\u043b\u044c ngx_http_core_module \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432.

\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 MIME (mime.types) \u0441 \u0441\u0430\u0439\u0442\u0430 github.com/h5bp/server-configs-nginx. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0442\u0438\u043f\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0434\u043b\u044f \u0441\u0436\u0430\u0442\u0438\u044f gzip.

nginx.conf:

user www-data;\nworker_processes auto;\nworker_rlimit_nofile 8192; # should be bigger than worker_connections\npid /run/nginx.pid;\n\nevents {\n    use epoll;\n    worker_connections 8000;\n    multi_accept on;\n}\n\nhttp {\n    sendfile on;\n    tcp_nopush on;\n    tcp_nodelay on;\n\n    keepalive_timeout 30; # longer values are better for each ssl client, but take up a worker connection longer\n    types_hash_max_size 2048;\n    server_tokens off;\n\n    # maximum file upload size\n    # update 'upload_max_filesize' & 'post_max_size' in /etc/php/fpm/php.ini accordingly\n    client_max_body_size 32m;\n    # client_body_timeout 60s; # increase for very long file uploads\n\n    # set default index file (can be overwritten for each site individually)\n    index index.html;\n\n    # load MIME types\n    include mime.types; # get this file from https://github.com/h5bp/server-configs-nginx\n    default_type application/octet-stream; # set default MIME type\n\n    # logging\n    access_log /var/log/nginx/access.log;\n    error_log /var/log/nginx/error.log;\n\n    # turn on gzip compression\n    gzip on;\n    gzip_disable \"msie6\";\n    gzip_vary on;\n    gzip_proxied any;\n    gzip_comp_level 5;\n    gzip_buffers 16 8k;\n    gzip_http_version 1.1;\n    gzip_min_length 256;\n    gzip_types\n        application/atom+xml\n        application/javascript\n        application/json\n        application/ld+json\n        application/manifest+json\n        application/rss+xml\n        application/vnd.geo+json\n        application/vnd.ms-fontobject\n        application/x-font-ttf\n        application/x-web-app-manifest+json\n        application/xhtml+xml\n        application/xml\n        font/opentype\n        image/bmp\n        image/svg+xml\n        image/x-icon\n        text/cache-manifest\n        text/css\n        text/javascript\n        text/plain\n        text/vcard\n        text/vnd.rim.location.xloc\n        text/vtt\n        text/x-component\n        text/x-cross-domain-policy;\n\n    # disable content type sniffing for more security\n    add_header \"X-Content-Type-Options\" \"nosniff\";\n\n    # force the latest IE version\n    add_header \"X-UA-Compatible\" \"IE=Edge\";\n\n    # enable anti-cross-site scripting filter built into IE 8+\n    add_header \"X-XSS-Protection\" \"1; mode=block\";\n\n    # include virtual host configs\n    include sites-enabled/*;\n}\n
"},{"location":"webservers-hosting/servers/nginx/#konfiguratsiia-saita-grav","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0430\u0439\u0442\u0430 Grav","text":"

Grav \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0444\u0430\u0439\u043b\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 webserver-configs \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Grav. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 nginx:

cp /var/www/grav/webserver-configs/nginx.conf /etc/nginx/sites-available/grav-site\n

\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 example.com \u043d\u0430 \u0441\u0432\u043e\u0439 \u0434\u043e\u043c\u0435\u043d/IP (\u0438\u043b\u0438 localhost, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e), \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 root \u043d\u0430 root/var/www/grav/;, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0432 sites-enabled:

ln -s /etc/nginx/sites-available/grav-site /etc/nginx/sites-enabled/grav-site\n

\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 Nginx \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:

nginx -s reload\n
"},{"location":"webservers-hosting/servers/nginx/#ispravlenie-uiazvimostei-httpoxy","title":"\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 httpoxy","text":"

httpoxy \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0432\u043b\u0438\u044f\u044e\u0449\u0438\u0445 \u043d\u0430 \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0432 CGI \u0438\u043b\u0438 CGI-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0430\u0445. (\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: httpoxy.org)

\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0430\u0439\u0442 \u043e\u0442 \u044d\u0442\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a Proxy. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 FastCGI \u0432 \u0432\u0430\u0448 config. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b /etc/nginx/fastcgi.conf \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043a\u043e\u043d\u0435\u0446:

fastcgi_param  HTTP_PROXY         \"\";\n
"},{"location":"webservers-hosting/servers/nginx/#ispolzovanie-ssl-s-sushchestvuiushchim-sertifikatom","title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 SSL (\u0441 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c)","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 SSL \u0434\u043b\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430, \u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0448\u0430\u0433\u0438 \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Nginx \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e.

\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b /etc/nginx/ssl.conf \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043f\u0443\u0442\u0438 \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u043a\u043b\u044e\u0447\u0430. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0441\u0448\u0438\u0432\u0430\u043d\u0438\u044f OSCP \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 + \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u0415\u0441\u043b\u0438 \u0432\u044b \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c OCSP Stapling. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e SSL (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0443\u0431\u0434\u043e\u043c\u0435\u043d\u044b), \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 https://hstspreload.appspot.com. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c preload; \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a Strict-Transport-Security. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043b\u0438 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.

ssl.conf:

# set the paths to your cert and key files here\nssl_certificate /etc/ssl/certs/example.com.crt;\nssl_certificate_key /etc/ssl/private/example.com.key;\n\nssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n\nssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;\nssl_prefer_server_ciphers on;\n\nssl_session_cache shared:SSL:10m; # a 1mb cache can hold about 4000 sessions, so we can hold 40000 sessions\nssl_session_timeout 24h;\n\n# Use a higher keepalive timeout to reduce the need for repeated handshakes\nkeepalive_timeout 300s; # up from 75 secs default\n\n# submit domain for preloading in browsers at: https://hstspreload.appspot.com\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload;\";\n\n# OCSP stapling\n# nginx will poll the CA for signed OCSP responses, and send them to clients so clients don't make their own OCSP calls.\n# see https://sslmate.com/blog/post/ocsp_stapling_in_apache_and_nginx on how to create the chain+root\nssl_stapling on;\nssl_stapling_verify on;\nssl_trusted_certificate /etc/ssl/certs/example.com.chain+root.crt;\nresolver 198.51.100.1 198.51.100.2 203.0.113.66 203.0.113.67 valid=60s;\nresolver_timeout 2s;\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0434\u043b\u044f Grav \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 /etc/nginx/sites-available/grav-site, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 HTTPS, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 443 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u0430\u0448 ssl.conf (\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 example.com \u043d\u0430 \u0441\u0432\u043e\u0439 \u0434\u043e\u043c\u0435\u043d/IP). \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0435\u0437 www \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0441 www.

grav-site:

# redirect http to non-www https\nserver {\n    listen [::]:80;\n    listen 80;\n    server_name example.com www.example.com;\n\n    return 302 https://example.com$request_uri;\n}\n\n# redirect www https to non-www https\nserver {\n    listen [::]:443 ssl;\n    listen 443 ssl;\n    server_name www.example.com;\n\n    # add ssl cert & options\n    include ssl.conf;\n\n    return 302 https://example.com$request_uri;\n}\n\n# serve website\nserver {\n    listen [::]:443 ssl;\n    listen 443 ssl;\n    server_name example.com;\n\n    # add ssl cert & options\n    include ssl.conf;\n\n    root /var/www/example.com;\n\n    index index.html index.php;\n\n    # ...\n    # the rest of this server block (location directives) is identical to the one from the shipped config\n}\n

\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Nginx:

nginx -s reload\n
"},{"location":"webservers-hosting/servers/nginx/#zagolovki-nginx-cache-dlia-aktivov","title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 Nginx Cache \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432","text":"

\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043a \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435. 'expires' \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0440\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u044d\u0448\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 30 \u0434\u043d\u0435\u0439. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u043e http-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0434\u043b\u044f Nginx.

        location ~* ^/forms-basic-captcha-image.jpg$ {\n                try_files $uri $uri/ /index.php$is_args$args;\n        }\n\n        location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {\n                expires 30d;\n                add_header Vary Accept-Encoding;\n                log_not_found off;\n        }\n\n        location ~* ^.+\\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$ {\n                access_log off;\n                expires 30d;\n                add_header Cache-Control public;\n\n## No need to bleed constant updates. Send the all shebang in one\n## fell swoop.\n                tcp_nodelay off;\n\n## Set the OS file cache.\n                open_file_cache max=3000 inactive=120s;\n                open_file_cache_valid 45s;\n                open_file_cache_min_uses 2;\n                open_file_cache_errors off;\n        }\n
"},{"location":"webservers-hosting/vps/generic/","title":"\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 VPS","text":""},{"location":"webservers-hosting/vps/generic/#universalnaia-ustanovka-vps","title":"\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 VPS","text":""},{"location":"webservers-hosting/vps/generic/#pakety-obnovlenii-i-uluchshenii","title":"\u041f\u0430\u043a\u0435\u0442\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439","text":"

\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u0442\u044c \u043b\u0438\u0431\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c /etc/hosts, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0438\u043c\u044f, \u0442\u0430\u043a\u043e\u0435 \u043a\u0430\u043a {{page.header.localname}}. \u0422\u0430\u043a \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043f\u043e SSH \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ssh root@{{ page.header.localname }}.

\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e SSH \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043a\u0430\u043a root \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0438 \u0441\u0430\u043c\u044b\u0435 \u043b\u0443\u0447\u0448\u0438\u0435:

$ apt-get update\n$ apt-get upgrade\n

\u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u044c\u0442\u0435 Y, \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e.

\u0414\u0430\u043b\u0435\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432:

$ apt-get install vim zip unzip nginx git php7-fpm php7-cli php7-gd php7-curl php7-apcu\n

\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 VIM (\u0430 \u043d\u0435 \u043c\u0438\u043d\u0438-\u0432\u0435\u0440\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 Ubuntu), \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 Nginx, \u043a\u043e\u043c\u0430\u043d\u0434\u044b GIT \u0438 PHP 7.

"},{"location":"webservers-hosting/vps/generic/#nastroika-pula-podkliuchenii-nginx","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0443\u043b\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 Nginx","text":"

Nginx \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u043d\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0443\u043b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 PHP \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442 \u0432\u0430\u0448\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0445 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440.

\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0443\u043b\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e grav:

$ cd /etc/php5/fpm/pool.d\n$ vi grav.conf\n

\u0412 VIM \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u0443\u043b\u0430:

[grav]\n\nuser = grav\ngroup = grav\n\nlisten = /var/run/php5-fpm.grav.sock\n\nlisten.owner = www-data\nlisten.group = www-data\n\npm = dynamic\npm.max_children = 5\npm.start_servers = 2\npm.min_spare_servers = 1\npm.max_spare_servers = 3\n\nchdir = /\n

\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438 \u0437\u0434\u0435\u0441\u044c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f user \u0438 group, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0438\u043c\u0435\u043d\u0435\u043c grav, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u043e\u043a\u0435\u0442, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u043a\u0435\u0442\u0430. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0438 \u0432\u044b\u0439\u0434\u0438\u0442\u0435 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430.

\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f grav:

$ adduser grav\n

\u0417\u0430\u0434\u0430\u0439\u0442\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0417\u0430\u0442\u0435\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f Nginx \u0434\u043b\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043c\u0435\u043d\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u0440\u0443 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:

$ su - grav\n$ mkdir www;cd www;mkdir html;cd html\n

\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 index.html \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c <h1> Working! </h1> \u0438 \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u02bbinfo.php\u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c<?php phpinfo();`

\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a root, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Nginx:

$ exit\n$ cd /etc/nginx/sites-available/\n$ vi grav\n

\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:

server {\n    #listen 80;\n    index index.html index.php;\n\n    ## Begin - Server Info\n    root /home/USER/www/html;\n    server_name localhost;\n    ## End - Server Info\n\n    ## Begin - Index\n    # for subfolders, simply adjust:\n    # `location /subfolder {`\n    # and the rewrite to use `/subfolder/index.php`\n    location / {\n        try_files $uri $uri/ /index.php?$query_string;\n    }\n    ## End - Index\n\n    ## Begin - Security\n    # deny all direct access for these folders\n    location ~* /(\\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }\n    # deny running scripts inside core system folders\n    location ~* /(system|vendor)/.*\\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }\n    # deny running scripts inside user folder\n    location ~* /user/.*\\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }\n    # deny access to specific files in the root folder\n    location ~ /(LICENSE\\.txt|composer\\.lock|composer\\.json|nginx\\.conf|web\\.config|htaccess\\.txt|\\.htaccess) { return 403; }\n    ## End - Security\n\n    ## Begin - PHP\n    location ~ \\.php$ {\n        # Choose either a socket or TCP/IP address\n        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;\n        # fastcgi_pass unix:/var/run/php5-fpm.sock; #legacy\n        # fastcgi_pass 127.0.0.1:9000;\n\n        fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n        fastcgi_index index.php;\n        include fastcgi_params;\n        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;\n    }\n    ## End - PHP\n}\n

\u042d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b nginx.conf, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 Grav \u0441 \u0434\u0432\u0443\u043c\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438: 1) root \u0431\u044b\u043b \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e/\u043f\u0430\u043f\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438, \u0430 \u043e\u043f\u0446\u0438\u044f fastcgi_pass \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043d\u0430 \u0441\u043e\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0443\u043b\u0435 grav. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0431\u044b\u043b \u0432\u043a\u043b\u044e\u0447\u0435\u043d:

$ cd ../sites-enabled\n$ ln -s ../sites-available/grav\n$ rm default\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Nginx \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 php5-fpm \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 Nginx \u0438 \u043f\u0443\u043b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 PHP:

$ service nginx restart\n$ service php5-fpm restart\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440: http://{{page.header.localname}}, \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442: Working!

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e PHP \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 \u0441\u0432\u043e\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435: http://{{page.header.localname}}/info.php. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 PHP \u0441 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 APCu, Opcache \u0438 \u0442. \u0434.

"},{"location":"webservers-hosting/vps/generic/#ustanovka-grav","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Grav","text":"

\u042d\u0442\u043e \u043b\u0435\u0433\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c! \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e Grav, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0438\u0431\u043e SSH \u043a\u0430\u043a grav@{{page.header.localname}}, \u043b\u0438\u0431\u043e su - grav \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root. \u0417\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

$ cd ~/www\n$ wget https://getgrav.org/download/core/grav/latest\n$ unzip grav-v{{ grav_version }}.zip\n$ rm -Rf html\n$ mv grav html\n

\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav, \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 http://{{page.header.localname}}, \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 Grav is Running!.

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Grav CLI \u0438 Grav GPM \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u0430\u043a:

$ cd ~/www/html\n$ bin/grav clear\n\nClearing cache\n\nCleared:  cache/twig/*\nCleared:  cache/compiled/*\n\nTouched: /home/grav/www/html/user/config/system.yaml\n

\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b GPM:

$ bin/gpm index\n
"},{"location":"webservers-hosting/vps/ubuntu-18.04/","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 VPS \u043d\u0430 Ubuntu 18.04","text":""},{"location":"webservers-hosting/vps/ubuntu-18.04/#ustanovka-vps-na-ubuntu-18-04","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 VPS \u043d\u0430 Ubuntu 18.04","text":""},{"location":"webservers-hosting/vps/ubuntu-18.04/#pakety-obnovlenii","title":"\u041f\u0430\u043a\u0435\u0442\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439","text":"

\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438\u0431\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c /etc/hosts, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0438\u043c\u044f, \u0442\u0430\u043a\u043e\u0435 \u043a\u0430\u043a {{ page.header.localname }}. \u0422\u0430\u043a \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043f\u043e SSH \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ssh root@{{ page.header.localname }}{% if ssh_port %} -p{{ ssh_port }}{% endif %}.

\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e SSH \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043a\u0430\u043a root \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b. \u042d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0441\u0430\u043c\u0443\u044e \u0441\u0432\u0435\u0436\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e:

# apt update\n# apt upgrade\n

\u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0435\u0442\u044c\u0442\u0435 Y, \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e.

\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u0434\u0442\u0438 \u0434\u0430\u043b\u044c\u0448\u0435, \u0443\u0434\u0430\u043b\u0438\u043c Apache2, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u043c Nginx:

# apt remove apache2*\n# apt autoremove\n

\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e. \u041d\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u0430\u0442\u044c\u0441\u044f!

\u0414\u0430\u043b\u0435\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432:

# apt install vim zip unzip nginx git php-fpm php-cli php-gd php-curl php-mbstring php-xml php-zip php-apcu\n

\u042d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 VIM (\u0430 \u043d\u0435 \u043c\u0438\u043d\u0438-\u0432\u0435\u0440\u0441\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 Ubuntu), \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 Nginx, \u043a\u043e\u043c\u0430\u043d\u0434\u044b GIT \u0438 PHP 7.2.

"},{"location":"webservers-hosting/vps/ubuntu-18.04/#konfiguratsiia-php7-2-fpm","title":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f PHP7.2 FPM","text":"

\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 php-fpm \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.

# vim /etc/php/7.2/fpm/php.ini\n

\u041d\u0430\u0439\u0434\u0438\u0442\u0435 cgi.fix_pathinfo. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab1\u00bb.

\u042d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 PHP, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b PHP \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0439\u0434\u0435\u043d. \u042d\u0442\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c PHP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043c\u043e\u0433\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c.

\u0420\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u00ab1\u00bb \u043d\u0430 \u00ab0\u00bb, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u0442\u0430\u043a

cgi.fix_pathinfo=0\n

\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0438 \u0437\u0430\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043b\u0443\u0436\u0431\u0443.

# systemctl restart php7.2-fpm\n
"},{"location":"webservers-hosting/vps/ubuntu-18.04/#nastroika-pula-podkliuchenii-nginx","title":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0443\u043b\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 Nginx","text":"

Nginx \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u043d\u043e \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0443\u043b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 PHP \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442 \u0432\u0430\u0448\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0445 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440.

\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0443\u043b\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e grav:

# cd /etc/php/7.2/fpm/pool.d\n# mv www.conf www.conf.bak\n# vim grav.conf\n

\u0412 Vim \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u0443\u043b\u0430:

[grav]\n\nuser = grav\ngroup = grav\n\nlisten = /var/run/php/php7.2-fpm.sock\n\nlisten.owner = www-data\nlisten.group = www-data\n\npm = dynamic\npm.max_children = 5\npm.start_servers = 2\npm.min_spare_servers = 1\npm.max_spare_servers = 3\n\nchdir = /\n

\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438 \u0437\u0434\u0435\u0441\u044c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f user \u0438 group, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0438\u043c\u0435\u043d\u0435\u043c grav, \u0438 \u0441\u043e\u043a\u0435\u0442 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u043a\u0435\u0442\u0430. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0438 \u0432\u044b\u0439\u0434\u0438\u0442\u0435 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430.

\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f grav:

# adduser grav\n

\u0417\u0430\u0434\u0430\u0439\u0442\u0435 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0417\u0430\u0442\u0435\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f Nginx \u0434\u043b\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043c\u0435\u043d\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u0440\u0443 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:

# su - grav\n$ mkdir -p www/html\n$ cd www/html\n

\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 index.html \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:

 <h1>Working!</h1>\n

..\u0438 \u0444\u0430\u0439\u043b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c info.php \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:

<?php phpinfo();\n

\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a root, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Nginx:

$ exit\n# cd /etc/nginx/sites-available/\n# vim grav\n

\u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:

server {\n    #listen 80;\n    index index.html index.php;\n\n    ## Begin - Server Info\n    root /home/grav/www/html;\n    server_name localhost;\n    ## End - Server Info\n\n    ## Begin - Index\n    # for subfolders, simply adjust:\n    # `location /subfolder {`\n    # and the rewrite to use `/subfolder/index.php`\n    location / {\n        try_files $uri $uri/ /index.php?$query_string;\n    }\n    ## End - Index\n\n    ## Begin - Security\n    # deny all direct access for these folders\n    location ~* /(\\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }\n    # deny running scripts inside core system folders\n    location ~* /(system|vendor)/.*\\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }\n    # deny running scripts inside user folder\n    location ~* /user/.*\\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }\n    # deny access to specific files in the root folder\n    location ~ /(LICENSE\\.txt|composer\\.lock|composer\\.json|nginx\\.conf|web\\.config|htaccess\\.txt|\\.htaccess) { return 403; }\n    ## End - Security\n\n    ## Begin - PHP\n    location ~ \\.php$ {\n        # Choose either a socket or TCP/IP address\n        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;\n        # fastcgi_pass unix:/var/run/php5-fpm.sock; #legacy\n        # fastcgi_pass 127.0.0.1:9000;\n\n        fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n        fastcgi_index index.php;\n        include fastcgi_params;\n        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;\n    }\n    ## End - PHP\n}\n

\u042d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b nginx.conf, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 Grav \u0441 \u0434\u0432\u0443\u043c\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438. 1) root \u0431\u044b\u043b \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e/\u043f\u0430\u043f\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438, \u0430 \u043e\u043f\u0446\u0438\u044f fastcgi_pass \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043d\u0430 \u0441\u043e\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0443\u043b\u0435 grav. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0431\u044b\u043b \u0432\u043a\u043b\u044e\u0447\u0435\u043d:

# cd ../sites-enabled\n# ln -s ../sites-available/grav\n# rm default\n

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b nginx -t. \u041e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok\nnginx: configuration file /etc/nginx/nginx.conf test is successful\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Nginx \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 php7-fpm \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 Nginx \u0438 \u043f\u0443\u043b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 PHP:

# systemctl restart nginx\n# systemctl restart php7.2-fpm\n

\u0422\u0435\u043f\u0435\u0440\u044c \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440: http://{{page.header.localname}}, \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442: Working!

\u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e PHP \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435: http://{{page.header.localname}}/info.php. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 PHP \u0441 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 APCu, Opcache \u0438 \u0442. \u0434.

"},{"location":"webservers-hosting/vps/ubuntu-18.04/#ustanovka-grav","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Grav","text":"

\u042d\u0442\u043e \u043b\u0435\u0433\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c! \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e Grav, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0438\u0431\u043e SSH \u043a\u0430\u043a grav@{{page.header.localname}}, \u043b\u0438\u0431\u043e su - grav \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:

$ cd ~/www\n$ wget -O grav.zip https://getgrav.org/download/core/grav/latest\n$ unzip grav.zip\n$ rm -Rf html\n$ mv grav html\n

\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav, \u0443\u043a\u0430\u0437\u0430\u0432 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 http://{{page.header.localname}}, \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 Grav is Running!.

\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u0430\u043a:

$ cd ~/www/html\n$ bin/grav clear\n\nClearing cache\n\nCleared:  cache/twig/*\nCleared:  cache/compiled/*\n\nTouched: /home/grav/www/html/user/config/system.yaml\n

\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b GPM:

$ bin/gpm index\n
"},{"location":"webservers-hosting/windows-subsystem-for-linux/","title":"\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 Windows \u0434\u043b\u044f Linux","text":""},{"location":"webservers-hosting/windows-subsystem-for-linux/#podsistema-windows-dlia-linux","title":"\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 Windows \u0434\u043b\u044f Linux","text":"

\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 Windows \u0434\u043b\u044f Linux \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0443 GNU/Linux - \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 - \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 Windows \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0442\u0440\u0430\u0442 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443.

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435:

  • \u0412\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b GNU/Linux \u0438\u0437 \u041c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 Windows.
  • \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u0430\u043a\u043e\u0435 \u043a\u0430\u043a grep, sed, awk \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b ELF-64.
  • \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 Bash \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 GNU/Linux, \u0432\u043a\u043b\u044e\u0447\u0430\u044f:
    • \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: vim, emacs, tmux
    • \u042f\u0437\u044b\u043a\u0438: Javascript/Node.js, Ruby, Python, C/C++, C# \u0438 F#, Rust, Go \u0438 \u0442. \u0434.
    • \u0421\u0435\u0440\u0432\u0438\u0441\u044b: sshd, MySQL, Apache, lighttpd
  • \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 GNU/Linux.
  • \u0412\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Windows \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Unix-\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.
  • \u0412\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f GNU/Linux \u0432 Windows.

\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0435 Windows \u0434\u043b\u044f Linux.

"},{"location":"webservers-hosting/windows-subsystem-for-linux/#ustanovka-podsistemy-windows-dlia-linux","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b Windows \u0434\u043b\u044f Linux","text":"

\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b Windows \u0434\u043b\u044f Linux \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 Microsoft \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443 Windows \u0434\u043b\u044f Linux. \u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 Ubuntu, \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0433\u043e \u0432 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435, \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e Ubuntu 18.04 LTS.

\u0427\u0442\u043e\u0431\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Ubuntu, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u043d\u043e\u0432\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430. \u042d\u0442\u043e\u0442 \u0448\u0430\u0433 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Ubuntu \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435.

\u0412\u0430\u0436\u043d\u044b\u043c \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u043c WSL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b Windows \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u0430\u043c, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u043c\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 Ubuntu. \u041e\u0434\u043d\u0430\u043a\u043e Ubuntu \u043c\u043e\u0436\u0435\u0442 (\u043f\u043e\u0447\u0442\u0438) \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Windows. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0444\u0430\u0439\u043b\u044b, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 Windows (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0430\u0448\u0430 IDE, \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435), \u0434\u043e\u043b\u0436\u043d\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Windows.

\u041f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Windows \u0438\u0437 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 bash \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0442\u044c \u043a /mnt/c/. \u0425\u043e\u0442\u044f \u044d\u0442\u043e \u0438 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0443\u0442\u0438 \u043a \u0444\u0430\u0439\u043b\u0443.

"},{"location":"webservers-hosting/windows-subsystem-for-linux/#ustanovka-apache","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Apache","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0435 bash \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Apache:

sudo apt install apache2\n

\u0422\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 WSL, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u0430\u043a \u0432\u044b \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u0430\u0432\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u043c\u044b\u0448\u0438 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438.

\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432. \u041f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0448\u0435, \u044d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b WSL. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: C:/Users/<Username>/Documents/Development/Web/webroot, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e C:/webroot.

\u0412 Ubuntu \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0430\u043f\u043a\u0443 webroot.

sudo ln -s /mnt/c/your/path/to/webroot /var/www/webroot\n

\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 Apache \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:

sudo nano /etc/apache2/sites-available/000-default.conf\n

\u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 Shift, \u0438 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u0437 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0448\u0438 Down. \u0417\u0430\u0442\u0435\u043c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Ctrl+K, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435.

\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e VirtualHost:

<VirtualHost *:80>\n\n    ServerName localhost\n\n    ServerAdmin webmaster@localhost\n    DocumentRoot  /var/www/webroot\n\n    <Directory /var/www/>\n        Options Indexes FollowSymLinks\n        AllowOverride All\n        Require all granted\n    </Directory>\n\n    ErrorLog ${APACHE_LOG_DIR}/error.log\n    CustomLog ${APACHE_LOG_DIR}/access.log combined\n\n</VirtualHost>\n

\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0444\u0430\u0439\u043b, \u043d\u0430\u0436\u0430\u0432 Ctrl+O, \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Enter \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f. \u0412\u044b\u0439\u0434\u0438\u0442\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Ctrl+X.

(\u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 ^ \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 Ctrl, \u0430 M \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 Alt)

\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0432\u0430\u0448 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440/IDE \u0432 Windows \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b index.html \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:

<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <title>It works!</title>\n</head>\n<body>\n  <h1>It works!</h1>\n</body>\n</html>\n

\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u043b\u0443\u0436\u0431\u0443 Apache:

sudo service apache2 start\n

\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c:

(92)Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT

\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 http://localhost \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442 'It works!'.

\u0414\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0430\u0448\u0438\u0445 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 Grav-\u0441\u0430\u0439\u0442\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c Apache rewrite.

sudo a2enmod rewrite\n
"},{"location":"webservers-hosting/windows-subsystem-for-linux/#ustanovka-php","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 PHP","text":"

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 PHP:

sudo apt install php\n

\u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e PHP \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0435\u0440\u0441\u0438\u044e, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:

php -v\n
\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043e\u0442\u0432\u0435\u0442:
PHP 7.2.7-0ubuntu0.18.04.2 (cli) (built: Jul  4 2018 16:55:24) ( NTS )\nCopyright (c) 1997-2018 The PHP Group\nZend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies\n

\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c Grav \u043a PHP, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 PHP:

sudo apt install php-mbstring php-gd php-curl php-xml php-zip\n

\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Apache, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u0432 \u0441\u0438\u043b\u0443:

sudo service apache2 restart\n
"},{"location":"webservers-hosting/windows-subsystem-for-linux/#ustanovka-grav","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Grav","text":"

\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Grav \u043a\u0430\u043a \u0438\u0437 Windows, \u0442\u0430\u043a \u0438 \u0438\u0437 Ubuntu.

"},{"location":"webservers-hosting/windows-subsystem-for-linux/#variant-1-windows","title":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1: Windows","text":"

\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 Grav, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0432 ZIP-\u0430\u0440\u0445\u0438\u0432 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0432 \u0435\u0433\u043e: 1. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0441\u0430\u043c\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0438 \u043b\u0443\u0447\u0448\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Grav \u0438\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 Grav + Admin. 1. \u0420\u0430\u0441\u043f\u0430\u043a\u0443\u0439\u0442\u0435 ZIP-\u0444\u0430\u0439\u043b \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u043c\u0438 \u0440\u0430\u043d\u0435\u0435 \u0432\u0435\u0431-\u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433. 1. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u0443\u0439\u0442\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0432 mysite. 1. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 http://localhost/mysite \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0438 \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Grav.

"},{"location":"webservers-hosting/windows-subsystem-for-linux/#variant-2-ubuntu","title":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2: Ubuntu","text":"

\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Grav \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0432\u0435\u0431-\u043a\u0430\u0442\u0430\u043b\u043e\u0433 Apache \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:

wget -O grav.zip https://getgrav.org/download/core/grav/latest\nsudo apt install unzip  # unzip is not installed by default on WSL/Ubuntu\nunzip grav.zip -d /var/www/webroot\nmv /var/www/webroot/grav /var/www/webroot/mysite\n

\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 http://localhost/mysite \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0438 \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Grav.

\u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e Grav.

"},{"location":"webservers-hosting/windows-subsystem-for-linux/#ustanovka-xdebug-neobiazatelno","title":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 XDebug (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0438 \u0442\u0435\u043c\u044b, \u0432\u0430\u043c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043e\u0434...

\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 XDebug \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:

sudo apt install php-xdebug\n

XDebug \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0432 php.ini. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440:

sudo nano /etc/php/7.2/apache2/php.ini\n

\u0418 \u0432 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:

[XDebug]\nxdebug.remote_enable = 1\n

\u0412 Nano \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Alt+/ \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0444\u0430\u0439\u043b\u0430.

\u0421\u043d\u043e\u0432\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 Apache:

sudo service apache2 restart\n
"},{"location":"webservers-hosting/windows-subsystem-for-linux/#aktivatsiia-otladchika","title":"\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430","text":"

\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443, \u0432\u0430\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 GET/POST \u0438\u043b\u0438 COOKIE. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043e\u0434\u043d\u0438\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0438. \u041a\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e, \u043e\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 cookie XDEBUG_SESSION \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 XDEBUG_SESSION_START. \u041d\u0438\u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.

\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Chrome Xdebug Helper Firefox Xdebug Helper \u0438\u043b\u0438 The easiest Xdebug Opera Xdebug launcher

\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0434\u043b\u044f \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u00ab\u041e\u0442\u043b\u0430\u0434\u043a\u0430\u00bb \u0432 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.

"},{"location":"webservers-hosting/windows-subsystem-for-linux/#zapusk-otladchika-v-visual-studio-code-neobiazatelno","title":"\u0417\u0430\u043f\u0443\u0441\u043a \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u0432 Visual Studio Code (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)","text":"

\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Vistual Studio Code \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 PHP \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 Apache/PHP \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 WSL, \u0438\u0437-\u0437\u0430 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432.

\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 PHP \u0432 .vscode/launch.json:

{\n    \"name\": \"LSW Listen for XDebug\",\n    \"type\": \"php\",\n    \"request\": \"launch\",\n    \"port\": 9000,\n    \"pathMappings\": {\n        \"/mnt/c\": \"c:/\",\n    }\n}\n
"},{"location":"webservers-hosting/windows-subsystem-for-linux/#dobavlenie-dopolnitelnykh-virtualnykh-khostov-neobiazatelno","title":"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0445\u043e\u0441\u0442\u043e\u0432 (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)","text":"

\u041d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 (\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e) \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Grav. \u0412\u043e\u0437\u044c\u043c\u0435\u043c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u044b \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0445 \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043c. \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0440\u0435\u0434\u044b:

  • \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0444\u0430\u0439\u043b C:/Windows/System32/drivers/etc/hosts. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0445\u043e\u0441\u0442\u044b:

    127.0.0.1 mysite-dev\n127.0.0.1 mysite-prod\n

    \u0425\u043e\u0441\u0442\u044b, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 hosts Windows, \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 /etc/hosts \u0432 WSL/Ubuntu. * \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 VirtualHost \u0432 \u043f\u0430\u043f\u043a\u0435 /etc/apache2/sites-available.

    sudo nano /etc/apache2/sites-available/mysite-dev.conf\n
    \u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440:
    <VirtualHost *:80>\n\n    ServerName mysite-dev\n\n    ServerAdmin webmaster@localhost\n    DocumentRoot  /var/www/webroot/mysite\n\n    <Directory /var/www/>\n        Options Indexes FollowSymLinks\n        AllowOverride All\n        Require all granted\n    </Directory>\n\n    ErrorLog ${APACHE_LOG_DIR}/error.log\n    CustomLog ${APACHE_LOG_DIR}/access.log combined\n\n</VirtualHost>\n
    \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f mysite-prod.conf \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 ServerName mysite-prod \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.

\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 VirtualHosts \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Apache:

sudo a2ensite mysite-*\nsudo service apache2 reload\nsudo service apache2 restart\n
\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 http://mysite-dev \u0438 \u043e\u043d \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 Grav \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 C:/your/path/to/webroot/mysite, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 /user/mysite-dev/config/."},{"location":"webservers-hosting/windows-subsystem-for-linux/#avtomaticheskii-zapusk-apache-neobiazatelno","title":"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a Apache (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e)","text":"

\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Apache \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438. \u0410 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u043e\u043b\u044c. \u0427\u0442\u043e\u0431\u044b Ubuntu \u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043b \u043f\u0430\u0440\u043e\u043b\u044c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u043b\u0443\u0436\u0431.

\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 visudo, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b sudoer:

sudo visudo -f /etc/sudoers.d/services\n

\u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:

%sudo ALL=(root) NOPASSWD: /usr/sbin/service *\n%wheel ALL=(root) NOPASSWD: /usr/sbin/service *\n

\u0422\u0435\u043f\u0435\u0440\u044c Apache \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u044f\u043c\u0438 \u0431\u0435\u0437 \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u043e\u043b\u044f.

\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c Apache \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 Ubuntu, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 sudo service apache2 start \u0432 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 .bashrc. \u042d\u0442\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b WSL.

nano .bashrc\n

\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442:

## Start apache2 if not running\nstatus=`service apache2 status`\nif [[ $status == *\"apache2 is not running\" ]]\nthen\n  sudo service apache2 start\nfi\n

\u0418 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0432 .bash_logout, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Apache \u043f\u0440\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0438 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 bash:

## Stop apache2 if running\nstatus=`service apache2 status`\nif [[ $status == *\"apache2 is running\" ]]\nthen\n  sudo service apache2 stop\nfi\n
"},{"location":"webservers-hosting/windows-subsystem-for-linux/#sovety-i-rekomendatsii","title":"\u0421\u043e\u0432\u0435\u0442\u044b \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438","text":""},{"location":"webservers-hosting/windows-subsystem-for-linux/#graficheskii-emuliator-terminala-linux","title":"\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 Linux","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c \u043f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u00ab\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439\u00bb \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Linux, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0433\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0434\u043b\u044f WSL.

"},{"location":"webservers-hosting/windows-subsystem-for-linux/#neskolko-veb-saitov-odna-kodovaia-baza-grav","title":"\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432, \u043e\u0434\u043d\u0430 \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430 Grav","text":"

\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u043c\u0435\u043d\u044f \u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432 Grav, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0445 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u0438 \u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 Grav.

"}]} \ No newline at end of file diff --git a/security/configuration/index.html b/security/configuration/index.html new file mode 100644 index 00000000..98ebe07b --- /dev/null +++ b/security/configuration/index.html @@ -0,0 +1,60 @@ + Рекомендуемая конфигурация - Документация Grav CMS на русском

Рекомендуемая конфигурация⚓︎

Сайт в продакшене⚓︎

Важно обеспечить безопасность производственного сайта путем усиления конфигурации. Для этого мы рекомендуем вам установить основную конфигурацию в user/config/, содержащую настройки по умолчанию, которые вы хотите использовать в производственной среде, и переопределить эти настройки в среде сайта разработки, например, user/env/localhost или user/env/site.local. Вы также можете переопределить настройки производственного сайта через среды, например, если вы используете многосайтовую установку на нескольких доменах.

Системная конфигурация (user/config/system.yaml)⚓︎

force_ssl: true       # Use HTTPS only (redirect from HTTP -> HTTPS)
+
+cache:
+  enabled: true       # Greatly speeds up the site
+  check:
+    method: hash      # Optimization, disables file modification checks for pages
+
+twig:
+  cache: true         # Greatly speeds up the site
+  debug: false        # We do not want to display debug messages
+  auto_reload: false  # Optimization, disables file modification checks for twig files
+  autoescape: true    # Protects from many XSS attacks, but requires twig updates if used in older sites/themes/plugins
+
+errors:
+  display: 0          # Display only a simple error
+  log: true           # Log errors for later inspection
+
+debugger:
+  enabled: false      # Never keep debugger enabled in a live site.
+  censored: true      # In case if you happen to enable debugger, avoid displaying sensitive information
+
+session:
+  enabled: true       # NOTE: Disable sessions if you do not use user login and/or forms.
+  secure: true        # Use this as your site should be using HTTPS only
+  httponly: true      # Protects session cookies against client side scripts and XSS
+  samesite: Strict    # Prevent all cross-site scripting attacks
+  split: true         # Separate admin session from the site session for added security
+
+strict_mode:          # Test your site before changing these. Removes backward compatibility and improves site security.
+  yaml_compat: false
+  twig_compat: false
+  blueprint_compat: false
+

Сайт в разработке⚓︎

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

Системная конфигурация (user/env/localhost/config/system.yaml)⚓︎

Замените localhost на имя вашего локального сервера.

force_ssl: false      # If the development site doesn't use SSL
+
+cache:
+  enabled: true       # Still keep cache enabled
+  check:
+    method: file      # Allow updating pages without clearing cache
+
+twig:
+  cache: true         # Still keep cache enabled
+  debug: true         # We want to display debug messages
+  auto_reload: true   # We may be editing twig files
+
+errors:
+  display: 1          # Display full backtrace if there are errors
+
+debugger:
+  enabled: true       # Debugger is handy to have
+  censored: false     # We may want to see secure content in debugger
+
+session:
+  secure: false       # If the development site doesn't use SSL
+  httponly: false     # If the development site doesn't use SSL
+
+strict_mode:          # These settings help you to keep your site updated to use the latest standards
+  yaml_compat: false
+  twig_compat: false
+  blueprint_compat: false
+
\ No newline at end of file diff --git a/security/developers/index.html b/security/developers/index.html new file mode 100644 index 00000000..234e94f7 --- /dev/null +++ b/security/developers/index.html @@ -0,0 +1 @@ + Разработчикам - Документация Grav CMS на русском

Разработчикам⚓︎

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

Лучшие практики⚓︎

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

  • При написании Twig-шаблонов, выводящих информацию, отправленную пользователем, всегда экранируйте ввод, сюда также входят активы.
  • PHP-код должен дезинфицировать ввод и вывод.
  • В чертежах следует отдавать предпочтение предустановленным параметрам: по возможности предоставляйте пользователю набор вариантов, а не исходный ввод.
  • Помните о том, как использование памяти и процессора влияет на расширение, и избегайте необоснованного использования системных ресурсов.
  • Используйте экосистему функций и процедур Grav вместо того, чтобы писать непроверенный код, и подумайте о проверенных в боях сторонних библиотеках, если вам нужно больше.
  • Не используйте небезопасные PHP-функции. Также прочтите собственные рекомендации PHP и руководство Консорциума безопасности PHP по этой теме.
  • Используйте специфичные для ошибок исключения, а не отчёты об ошибках, когда сценарий должен завершиться ошибкой. Никогда не включайте данные пользователя, установки или системы в исключения или общедоступную отладку.

Плоская CMS⚓︎

Grav имеет ограниченные требования, и, в частности, её архитектура плоских файлов устраняет необходимость в базе данных. Это полезно, потому что общим вектором атаки является база данных системы. Санитарная обработка и защита входных данных — намного более сложная задача, когда вся CMS полагается на базу данных, а атаки с использованием SQL-инъекций могут автоматически пытаться выполнить SQL-операторы даже на удаленных хостах.

\ No newline at end of file diff --git a/security/overview/index.html b/security/overview/index.html new file mode 100644 index 00000000..ba45e80b --- /dev/null +++ b/security/overview/index.html @@ -0,0 +1 @@ + Обзор - Документация Grav CMS на русском

Обзор⚓︎

Если вы обнаружите возможную проблему безопасности, связанную с Grav или одним из его расширений, отправьте электронное письмо основной команде по адресу contact@getgrav.org, и мы решим её, как только возможно.

Проблемы не должны разглашаться публично, в том числе на GitHub, Discord или форуме Discourse, до тех пор, пока основная команда не получит возможность изучить их и связаться с соответствующими сторонами для решения. Кроме того, если проблема не является потенциальной угрозой для пользователей Grav, ее, вероятно, следует отправить как проблему вместо этого. Если вы не уверены, свяжитесь с нами, и мы поможем вам выяснить, кому принадлежит отчёт.

Отправка отчёта⚓︎

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

  1. Укажите номера версий Grav и всех установленных расширений, а также к какому компоненту относится проблема.
  2. Опишите уязвимость подробно и кратко, чтобы меньше времени тратилось на поиск её источника.
  3. Запишите точные шаги, необходимые для воспроизведения среды, в которой возникает уязвимость: какие настройки установлены в system.yaml, какой контент создается и какие системные настройки применяются?
  4. Если возможно, опишите источник уязвимости и способы ее исправления, чтобы разработчики могли как восстановить, так и защитить ее.

Ответственное раскрытие информации⚓︎

Grav следует модели responsible disclosure для представления обнаруженных уязвимостей. Это означает, что как только проблема обнаружена, протестирована и успешно продемонстрирована, разработчику(разработчикам) должен быть предоставлен период времени для исправления уязвимости, прежде чем она будет публично раскрыта. Это связано с тем, что поиск и тестирование решений заявленных проблем требуют много времени и времени, а Grav — это проект с открытым исходным кодом, авторы которого не имеют неограниченного времени, чтобы посвятить ему. Поэтому рекомендуется также предложить, как решить проблему или исправить ее, если у вас есть знания соответствующего кода.

Процесс разрешения проблемы⚓︎

Отчёты и проблемы остаются конфиденциальными, пока проблема не будет решена. В случае, если сопровождающий расширения не может своевременно решить проблему, расширение удаляется из метода Grav Package Manner до тех пор, пока она не будет решена.

Поддерживаемые версии⚓︎

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

Уровни риска⚓︎

Есть пять уровней риска, связанных с Grav как программным обеспечением:

  • Очень критично
  • критический
  • Умеренно критично
  • Менее критичный
  • Не критично

Они рассчитываются на основе «Общей системы оценки неправильного использования» (CMSS) Национального института стандартов и технологий (NIST). Из-за отсутствия легко доступного калькулятора для Grav используйте RiskCalc Drupal (примечания).

\ No newline at end of file diff --git a/security/server-side/index.html b/security/server-side/index.html new file mode 100644 index 00000000..563d001c --- /dev/null +++ b/security/server-side/index.html @@ -0,0 +1 @@ + На стороне сервера - Документация Grav CMS на русском

На стороне сервера⚓︎

Защита вашей установки Grav на стороне сервера заключается в использовании разумных опций для вашего сервера и PHP. В этом руководстве не рассматриваются ни настройки сервера, на котором вы запускаете Grav, ни идеальные условия, а лишь некоторые советы и передовые методы защиты Grav или ссылки на ресурсы, в которых подробно описывается, как защитить сервер. Это актуально для производственного сервера, а не для локальной разработки и не рекомендуется для начинающих пользователей!

Grav и конфигурация по умолчанию⚓︎

Для Grav вы всегда должны использовать актуальную конфигурацию каталога, соответствующую вашему серверу. Они находятся в репозитории GitHub. Кроме того, периодически обновляйте вашу установку Grav по мере того, как в новых версиях внедряются новые исправления безопасности - подробности см. в CHANGELOG.

Конфигурация PHP⚓︎

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

Как правило, конфигурация PHP изменяется через php.ini. Вы можете найти расположение этого файла из командной строки с помощью команды php --ini или, если у вас нет доступа к прямым командам, создайте файл с именем phpinfo.php в общедоступной корневой папке вашего веб-сервера. содержащий <? php phpinfo(); ?>и откройте его в своем браузере. Путь будет указан в разделе «Загруженный файл конфигурации». После обнаружения удалите файл phpinfo.php.

Некоторые общие рекомендации:

Конфигурация веб-сервера⚓︎

Обычное программное обеспечение веб-сервера или HTTP-сервера включает Nginx и Apache, а также более современные альтернативы, такие как LiteSpeed ​​или CaddyServer. Вышеупомянутые конфигурации веб-сервера включают необходимые значения по умолчанию для Grav, но вы можете дополнительно защитить веб-сервер с помощью его конфигурации. Некоторые соответствующие ресурсы:

Конфигурация сервера⚓︎

Вы должны всегда поддерживать свою операционную систему (ОС) в актуальном состоянии. ОС уязвимы для эксплойтов и вторжений даже в большей степени, чем PHP, и их следует обновлять как можно чаще. Кроме того, вы должны всегда обновлять другое программное обеспечение: ваша установка - это не только ОС, PHP и Grav. Другие программные пакеты также являются факторами риска и должны часто обновляться.

Чтобы защитить подключение пользователей к вашему сайту, вы должны включить и применить HTTPS с SSL-сертификатом. Это гарантирует, что вся связь между сервером и браузером остается конфиденциальной и зашифрованной. Бесплатные сертификаты и услуги доступны, например, через Let's Encrypt или CloudFlare.

Если ваш сервер работает на Linux, включите Linux с усиленной безопасностью. SELinux обычно включен по умолчанию, и это того стоит иметь. Еще несколько рекомендаций для системных администраторов доступны на nixCraft.

\ No newline at end of file diff --git a/security/users/index.html b/security/users/index.html new file mode 100644 index 00000000..fe2ce000 --- /dev/null +++ b/security/users/index.html @@ -0,0 +1 @@ + Пользователям - Документация Grav CMS на русском

Пользователям⚓︎

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

Пользователи Grav и панель админки⚓︎

При создании пользователей, которые будут иметь доступ к панели администратора, вы должны сначала подумать, к чему они будут иметь доступ. плагин админки предлагает надежные разрешения, которые должны быть установлены для ограничения того, что новые пользователи могут делать с сайтом. Если у вас много пользователей, и некоторые из них будут писать только контент для сайта, им обычно требуется только разрешение admin.pages, а также обычные разрешения, такие как admin.login.

Кроме того, всегда рекомендуется, чтобы у ваших пользователей не был только один пароль, который они используют везде. Если кто-то украл их пароль, они могли бы войти в систему где угодно. Хороший пароль — это надежный пароль, но даже длинное предложение со словами из словаря легче взломать, чем пароль, состоящий из случайных символов, букв и цифр. У любого человека возникнут проблемы с запоминанием длинного случайного пароля хотя — а тем более нескольких — поэтому передовой опыт — использовать менеджер паролей и никогда не использовать один и тот же пароль дважды. Многим людям также нравится, чтобы их браузер запомнил пароли для каждого сайта и запомнил только один надежный пароль, чтобы разблокировать их. Чтобы сгенерировать случайный пароль, вам нужно только открыть Блокнот и яростно нажимать случайные клавиши на клавиатуре.

Попросите пользователей использовать случайные пароли и создать один надежный длинный пароль, который они будут помнить. Иногда этот длинный пароль также следует изменить. И поскольку это есть в подключаемом модуле администратора, они всегда должны использовать 2-факторную аутентификацию. Чтобы предотвратить атаки методом грубой силы на панель администратора, администратор также должен включить Flood Protection.

Пользователи сервера и веб-мастер⚓︎

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

В более широком смысле, подумайте, нужен ли какой-либо другой пользователю доступ к серверу. Каждый дополнительный пользователь, имеющий доступ, представляет собой потенциальный риск не только из-за их собственного поведения, но и из-за опасности того, что в случае кражи их ключей или паролей другие могут получить доступ к серверу напрямую. Точно так же ни один пользователь не должен иметь root-доступ к серверу, а системный пользователь, запускающий PHP для Grav, должен быть отдельным пользователем, доступ к которому имеет только система.

Учитывая, насколько важен сервер для вашего веб-сайта или сервиса, забота о его защите и его содержимом должна иметь первостепенное значение.

\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..79c9d629 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,703 @@ + + + + https://grav-docs.ru/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/accounts/configuration/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/accounts/groups/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/accounts/permissions/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/accounts/users/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/dashboard/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/dashboard/configuration-site/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/dashboard/configuration-system/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/dashboard/profile/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/extending/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/extending/admin-events/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/faq/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/introduction/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/page/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/page/advanced/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/page/configuration/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/page/editor/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/page/options/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/page/permissions/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/page/security/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/plugins/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/plugins/options/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/security/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/security/2fa/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/security/rate-limiting/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/themes/ + 2024-03-27 + daily + + + https://grav-docs.ru/admin-panel/tools/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/backups/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/change-site-url/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/debugging/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/environment-config/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/administration/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/administration/configuration/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/administration/introduction/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/administration/views-edit/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/administration/views-list/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/custom-types/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/custom-types/blueprint/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/using/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/using/collection/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/using/directory/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/using/flex/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/flex/using/object/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/grav-development/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/grav-development/grav-15-upgrade-guide/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/grav-development/grav-16-upgrade-guide/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/grav-development/grav-17-upgrade-guide/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/groups-and-permissions/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/multisite-setup/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/performance-and-caching/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/plugin-prioritization/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/scheduler/ + 2024-03-27 + daily + + + https://grav-docs.ru/advanced/yaml/ + 2024-03-27 + daily + + + https://grav-docs.ru/basics/basic-tutorial/ + 2024-03-27 + daily + + + https://grav-docs.ru/basics/folder-structure/ + 2024-03-27 + daily + + + https://grav-docs.ru/basics/getting-help/ + 2024-03-27 + daily + + + https://grav-docs.ru/basics/grav-configuration/ + 2024-03-27 + daily + + + https://grav-docs.ru/basics/installation/ + 2024-03-27 + daily + + + https://grav-docs.ru/basics/requirements/ + 2024-03-27 + daily + + + https://grav-docs.ru/basics/updates/ + 2024-03-27 + daily + + + https://grav-docs.ru/basics/what-is-grav/ + 2024-03-27 + daily + + + https://grav-docs.ru/cli-console/command-line-intro/ + 2024-03-27 + daily + + + https://grav-docs.ru/cli-console/grav-cli/ + 2024-03-27 + daily + + + https://grav-docs.ru/cli-console/grav-cli-gpm/ + 2024-03-27 + daily + + + https://grav-docs.ru/cli-console/grav-cli-plugin/ + 2024-03-27 + daily + + + https://grav-docs.ru/cli-console/scripted-upgrades/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/collections/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/content-pages/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/content-types/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/headers/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/image-linking/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/linking/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/markdown/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/media/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/modular/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/multi-language/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/routing/ + 2024-03-27 + daily + + + https://grav-docs.ru/content/taxonomy/ + 2024-03-27 + daily + + + https://grav-docs.ru/cookbook/admin-recipes/ + 2024-03-27 + daily + + + https://grav-docs.ru/cookbook/general-recipes/ + 2024-03-27 + daily + + + https://grav-docs.ru/cookbook/plugin-recipes/ + 2024-03-27 + daily + + + https://grav-docs.ru/cookbook/tutorials/create-a-blog/ + 2024-03-27 + daily + + + https://grav-docs.ru/cookbook/twig-recipes/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/blueprints/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/blueprints/advanced-features/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/blueprints/example-config-blueprints/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/blueprints/example-page-blueprint/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/blueprints/example-plugin-blueprint/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/blueprints/example-plugin-configuration/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/blueprints/fields-available/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/blueprints/how-to-add-file-upload/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/forms/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/forms/example-form/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/forms/fields-available/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/forms/form-options/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/forms/how-to-ajax-submission/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/forms/how-to-forms-in-modular-pages/ + 2024-03-27 + daily + + + https://grav-docs.ru/forms/forms/reference-form-actions/ + 2024-03-27 + daily + + + https://grav-docs.ru/hints-tips/metadata/ + 2024-03-27 + daily + + + https://grav-docs.ru/plugins/event-hooks/ + 2024-03-27 + daily + + + https://grav-docs.ru/plugins/grav-lifecycle/ + 2024-03-27 + daily + + + https://grav-docs.ru/plugins/plugin-basics/ + 2024-03-27 + daily + + + https://grav-docs.ru/plugins/plugin-flex/ + 2024-03-27 + daily + + + https://grav-docs.ru/plugins/plugin-install/ + 2024-03-27 + daily + + + https://grav-docs.ru/plugins/plugin-tutorial/ + 2024-03-27 + daily + + + https://grav-docs.ru/security/configuration/ + 2024-03-27 + daily + + + https://grav-docs.ru/security/developers/ + 2024-03-27 + daily + + + https://grav-docs.ru/security/overview/ + 2024-03-27 + daily + + + https://grav-docs.ru/security/server-side/ + 2024-03-27 + daily + + + https://grav-docs.ru/security/users/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/asset-manager/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/customization/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/theme-basics/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/theme-configuration/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/theme-tutorial/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/theme-vars/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/twig-primer/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/twig-tags-filters-functions/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/twig-tags-filters-functions/filters/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/twig-tags-filters-functions/functions/ + 2024-03-27 + daily + + + https://grav-docs.ru/themes/twig-tags-filters-functions/tags/ + 2024-03-27 + daily + + + https://grav-docs.ru/troubleshooting/common-problems/ + 2024-03-27 + daily + + + https://grav-docs.ru/troubleshooting/forbidden/ + 2024-03-27 + daily + + + https://grav-docs.ru/troubleshooting/htaccess/ + 2024-03-27 + daily + + + https://grav-docs.ru/troubleshooting/internal-server-error/ + 2024-03-27 + daily + + + https://grav-docs.ru/troubleshooting/invalid-security-token/ + 2024-03-27 + daily + + + https://grav-docs.ru/troubleshooting/page-not-found/ + 2024-03-27 + daily + + + https://grav-docs.ru/troubleshooting/permissions/ + 2024-03-27 + daily + + + https://grav-docs.ru/troubleshooting/proxy/ + 2024-03-27 + daily + + + https://grav-docs.ru/troubleshooting/server-error/ + 2024-03-27 + daily + + + https://grav-docs.ru/webservers-hosting/deploying-with-git/ + 2024-03-27 + daily + + + https://grav-docs.ru/webservers-hosting/local-development-with-ddev/ + 2024-03-27 + daily + + + https://grav-docs.ru/webservers-hosting/php-built-in-web-server/ + 2024-03-27 + daily + + + https://grav-docs.ru/webservers-hosting/servers/grav-built-in/ + 2024-03-27 + daily + + + https://grav-docs.ru/webservers-hosting/servers/nginx/ + 2024-03-27 + daily + + + https://grav-docs.ru/webservers-hosting/vps/generic/ + 2024-03-27 + daily + + + https://grav-docs.ru/webservers-hosting/vps/ubuntu-18.04/ + 2024-03-27 + daily + + + https://grav-docs.ru/webservers-hosting/windows-subsystem-for-linux/ + 2024-03-27 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 00000000..7974a5d8 Binary files /dev/null and b/sitemap.xml.gz differ diff --git a/themes/asset-manager/index.html b/themes/asset-manager/index.html new file mode 100644 index 00000000..288b524f --- /dev/null +++ b/themes/asset-manager/index.html @@ -0,0 +1,184 @@ + Менеджер активов - Документация Grav CMS на русском

Менеджер активов⚓︎

В Grav 1.6 менеджер активов был полностью переписан, чтобы обеспечить более гибкий механизм для управления CSS и JavaScript активами в темах. Основная цель диспетчера активов является упрощение процесса добавления активов из тем и плагинов, обеспечивая расширенные возможности, такие как приоритет, а также предоставление конвейера активов, который может быть использован для активов minify, compress и inline, чтобы уменьшить количество запросов браузера, а также общий размер активов.

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

Техническая информация

Основной класс Assets был значительно упрощен и сокращен. Большая часть логики была разбита на 3 трейта. testing trait, которая содержит функции, в основном используемые в нашем тестовом наборе, utils trait, которая содержит методы, которые разделяются между обычными типами активов (js, inline_js, css, inline_css) и конвейером активов, который может минимизировать и сжимать, и, наконец, legacy trait, которая содержит методы, которые являются ярлыками или обходными путями, и которые, как правило, не должны использоваться в дальнейшем.

Менеджер активов полностью обратно совместим с синтаксисом, используемым в версиях до Grav 1.6, однако в приведенной ниже документации будет описан новый предпочтительный синтаксис.

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

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

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

Структура⚓︎

Существует несколько уровней управления позиционированием, как показано на схеме ниже. В порядке охвата они:

  • Group - позволяет группировать активы, такие как head (по умолчанию) иbottom
  • Position - before, pipeline(default) и after. По сути, это позволяет вам указать, где в группе должен быть загружен актив.
  • Priority - Это управляет приоритетом*, где большие целые числа (например, 100) будут выводиться перед более низкими целыми числами. 10 - это значение по умолчанию.
CSS
+┌───────────────┐
+│ Группа (head) │
+│┌─────────────┐│        ┌────────────────┐
+││ Позиция     ││        │ приоритет 100  │─────┐     ┌────────────────┐
+││┌───────────┐││        ├────────────────┤     ├────▶│       CSS      │
+│││           │││        │ приоритет 99   │─────┤     └────────────────┘
+│││ before    │├┼──┬────▶├────────────────┤     │
+│││           │││  │     │ приоритет 1    │─────┤     ┌────────────────┐
+││├───────────┤││  │     ├────────────────┤     ├────▶│ внутренний CSS │
+│││           │││  │     │ приоритет 0    │─────┘     └────────────────┘
+│││ pipeline  │├┼──┤     └────────────────┘
+│││           │││  │
+││├───────────┤││  │
+│││           │││  │
+│││ after     │├┼──┘
+│││           │││
+││└───────────┘││
+│└─────────────┘│
+└───────────────┘
+
+JS
+┌───────────────┐
+│ Группа (head) │
+│┌─────────────┐│        ┌────────────────┐
+││ Позиция     ││        │ приоритет 100  │─────┐     ┌────────────────┐
+││┌───────────┐││        ├────────────────┤     ├────▶│        JS      │
+│││           │││        │ приоритет 99   │─────┤     └────────────────┘
+│││ before    │├┼──┬────▶├────────────────┤     │
+│││           │││  │     │ приоритет 1    │─────┤     ┌────────────────┐
+││├───────────┤││  │     ├────────────────┤     ├────▶│  внутренний JS │
+│││           │││  │     │ приоритет 0    │─────┘     └────────────────┘
+│││ pipeline  │├┼──┤     └────────────────┘
+│││           │││  │
+││├───────────┤││  │
+│││           │││  │
+│││ after     │├┼──┘
+│││           │││
+││└───────────┘││
+│└─────────────┘│
+└───────────────┘
+
+JS-модуль
+┌───────────────┐
+│ Группа (head) │
+│┌─────────────┐│        ┌────────────────┐
+││ Позиция     ││        │ приоритет 100  │─────┐     ┌───────────────────────┐
+││┌───────────┐││        ├────────────────┤     ├────▶│        JS-модуль      │
+│││           │││        │ приоритет 99   │─────┤     └───────────────────────┘
+│││ before    │├┼──┬────▶├────────────────┤     │
+│││           │││  │     │ приоритет 1    │─────┤     ┌───────────────────────┐
+││├───────────┤││  │     ├────────────────┤     ├────▶│  внутренний JS-модуль │
+│││           │││  │     │ приоритет 0    │─────┘     └───────────────────────┘
+│││ pipeline  │├┼──┤     └────────────────┘
+│││           │││  │
+││├───────────┤││  │
+│││           │││  │
+│││ after     │├┼──┘
+│││           │││
+││└───────────┘││
+│└─────────────┘│
+└───────────────┘
+

По умолчанию CSS, JS и JS-модуль по умолчанию отображаются в позиции конвейера при выводе. В то время как InlineCSS, InlineJS и Inline JS Module по умолчанию находятся в позиции after. Однако это можно настроить, и вы можете установить любой актив в любое положение.

Активы в темах⚓︎

Обзор⚓︎

Как правило, вы добавляете ресурсы CSS один за другим с помощью вызовов assets.addCss() или assets.addInlineCss(), а затем визуализируете эти активы через assets.css(). Параметры, управляющие приоритетом, конвейерной обработкой или встраиванием, могут быть указаны для каждого ресурса при его добавлении или во время рендеринга для группы ресурсов.

Ресурсы JS обрабатываются аналогично с вызовами assets.addJs() и assets.addInlineJs(). Существует также общий метод assets.add(), который пытается угадать тип добавляемого актива, но рекомендуется использовать более конкретные вызовы методов.

Начиная с версии 1.7.27, менеджер активов Grav также поддерживает JS-модули. Эти активы работают точно так же, как и активы JS, но их тип - type="module", и они обрабатываются с помощью вызовов assets.addJsModule() и assets.addInlineJsModule(). Общий метод assets.add() будет использоваться для JS-модуля, только если обнаруженное расширение .mjs. В противном случае любой файл .js будет рассматриваться как обычный JS.

Чтобы узнать больше о модулях JS, воспользуйтесь этими ссылками

Менеджер активов также поддерживает:

  • добавление ресурсов в названные группы для отображения таких групп в разных местах и​/или с разными наборами параметров,
  • настройка именованных коллекций активов, которые могут быть добавлены за один вызов assets.add*().

Пример⚓︎

Пример того, как вы можете добавить CSS-файлы в свою тему, можно найти в теме по умолчанию quark, которая поставляется в комплекте с Grav. Если вы взглянете на templates/partials/base.html.twig, вы увидите нечто похожее:

<!DOCTYPE html>
+<html>
+    <head>
+    ...
+
+    {% block stylesheets %}
+        {% do assets.addCss('theme://css-compiled/spectre.css') %}
+        {% do assets.addCss('theme://css-compiled/theme.css') %}
+        {% do assets.addCss('theme://css/custom.css') %}
+        {% do assets.addCss('theme://css/line-awesome.min.css') %}
+    {% endblock %}
+
+    {% block javascripts %}
+        {% do assets.addJs('jquery', 101) %}
+        {% do assets.addJs('theme://js/jquery.treemenu.js', { group: 'bottom' }) %}
+        {% do assets.addJs('theme://js/site.js', { group: 'bottom' }) %}
+        {% do assets.addJsModule('plugin://my_plugin/app/main.js', { group: 'bottom' }) %}
+    {% endblock %}
+
+    {% block assets deferred %}
+        {{ assets.css()|raw }}
+        {{ assets.js()|raw }}
+    {% endblock %}
+    </head>
+
+    <body>
+    ...
+
+    {% block bottom %}
+        {{ assets.js('bottom')|raw }}
+    {% endblock %}
+    </body>
+</html>
+

Тег twig block stylesheets просто определяет область, которую можно заменить или добавить в шаблоны, расширяющие ее. Внутри блока вы увидите несколько вызовов do assets.addCss().

Тег {% do %} на самом деле встроен в Twig, и это позволяет вам манипулировать переменными без генерации вывода.

Метод addCss() добавляет CSS-активы в менеджер активов. Если вы зададите второй числовой параметр, то он установит приоритет таблицы стилей. Если вы не укажете приоритет, то приоритет добавления активов будет диктовать порядок их отображения. Вы заметите использование PHP stream wrapper theme://, чтобы обеспечить простой способ для Grav определить относительный путь текущей темы.

Коллекция assets.addJs('jquery', 101) будет включать коллекцию jquery, определенную в глобальной конфигурации Assets. Опциональный параметр здесь 101 устанавливает достаточно высокий приоритет, чтобы обеспечить его рендеринг в первую очередь. Приоритет по умолчанию, когда он не предоставляется, равен значению 10. Более гибким способом написания было бы assets.addJs('jquery', {priority: 101}). Это позволяет добавлять другие параметры наряду с приоритетом.

Вызов assets.css()|raw делает CSS-активы HTML-тегами. Так как в этом методе параметр не задан, то по умолчанию группа имеет значение head. Обратите внимание, как это обернуто в бло assets deferred. Это новая функция в Grav 1.6, которая позволяет вам добавлять средства из других Twig шаблонов, которые включены дальше по странице (или в любом другом месте на самом деле), и всё же убедиться, что они могут отрисовывать в этом блоке head, если это необходимо.

Блок bottom в самом конце вывода вашей темы отображает JavaScript, входящий в группу bottom.

Добавление активов⚓︎

add(asset, [options])⚓︎

Метод добавления делает всё возможное, чтобы соответствовать активу, основанному на расширении файла. Это удобный метод, лучше вызвать один из прямых методов для CSS, Link, JS или JS-модуля. Подробности см. в разделе «Прямые методы».

Массив параметров - предпочтительный подход для передачи нескольких параметров. Однако, как и в предыдущем примере с jquery, вы можете использовать ярлык и передать целое число для второго аргумента в метод, если всё, что вы хотите установить, это приоритет.

addCss(asset, [options])⚓︎

Этот метод добавит активы в список ресурсов CSS. По умолчанию приоритет 10, если он не указан. Более высокое число означает, что оно будет отображаться перед активами с более низким приоритетом. Опция pipeline контролирует, должен ли этот актив быть включен в конвейер объединения/минимизации. Если не конвейерный, опция loading контролирует, должен ли актив отображаться как ссылка на внешнюю таблицу стилей или его содержимое должно быть встроено во встроенный тег стиля.

Этот метод добавит активы в список ресурсов Link, в виде тега <link>. Он полезен для добавления тегов ссылок в head из любого места вашего сайта, не являющегося файлами CSS. Приоритет по умолчанию равен 10, если он не указан. Большее число означает, что он будет отображаться перед активами с более низким приоритетом.

В отличие от других методов добавления активов, link() не поддерживает конвейеризацию и не поддерживает inline.

addInlineCss(css, [options])⚓︎

Позволяет добавить строку CSS внутри встроенного тега стиля. Полезно для инициализации или чего-нибудь динамического. Чтобы встроить содержимое обычного файла ресурсов, см. параметр { 'loading': 'inline' } методов addCss() и css().

addJs(asset, [options])⚓︎

Этот метод добавит ресурсы в список ресурсов JavaScript. По умолчанию приоритет 10, если он не указан. Более высокое число означает, что оно будет отображаться перед активами с более низким приоритетом. Опция pipeline контролирует, должен ли этот актив быть включен в конвейер объединения/минимизации. Если не конвейерно, опция loading определяет, должен ли ресурс отображаться как ссылка на внешний файл скрипта или его содержимое должно быть встроено во внутренний тег скрипта.

addInlineJs(javascript, [options])⚓︎

Позволяет добавить строку JavaScript во встроенный тег скрипта. Полезно для инициализации или чего-нибудь динамического. Чтобы встроить содержимое обычного файла ресурсов, см. параметр { 'loading': 'inline' } методов addJs() и js().

addJsModule(asset, [options])⚓︎

Этот метод добавит активы в список активов модулей JavaScript. Приоритет по умолчанию равен 10, если он не указан. Большее число означает, что он будет отображаться перед активами с более низким приоритетом. Параметр pipeline контролирует, должен ли этот актив быть включен в конвейер для объединения/минификации. Если он не конвейерный, параметр loading определяет, должен ли актив отображаться как ссылка на внешний файл скрипта или его содержимое должно быть вставлено во внутренний тег скрипта.

addInlineJsModule(javascript, [options])⚓︎

Позволяет добавить строку JavaScript внутри тега скрипта встроенного модуля. Чтобы вставить содержимое обычного файла активов, см. опцию { 'loading': 'inline' } методов addJsModule() и js().

registerCollection(name, array)⚓︎

Позволяет вам зарегистрировать массив ресурсов CSS и JavaScript с именем для последующего использования методом add(). Особенно полезно, если вы хотите зарегистрировать коллекцию, которая может использоваться несколькими темами или плагинами, такими как jQuery или Bootstrap.

Параметры⚓︎

Where appropriate, you can pass in an array of asset options. The core options are:

Для CSS⚓︎

  • priority: Целочисленное значение (значение по умолчанию - 10)

  • position: pipeline по умолчанию, но также может быть before или after.

  • loading: inline если этот актив должен выводиться скорее встроенным (по умолчанию: ссылка на таблицу стилей). Следует использовать вместе с position: before или position: after, так как это не повлияет на position: pipeline (по умолчанию).

  • group: строка для указания уникального имени группы для актива (по умолчанию head)

Для JS и JS-модулей⚓︎

  • priority: Целочисленное значение (значение по умолчанию - 10)

  • position: pipeline по умолчанию, но также может быть before или after.

  • loading: поддерживает любой тип загрузки, например async, defer, async defer или inline. Следует использовать вместе с position: before или position: after, так как это не повлияет на position: pipeline (по умолчанию).

  • group: строка для указания уникального имени группы для актива (по умолчанию head)

Другие атрибуты⚓︎

Вы также можете передать все, что угодно, в массив параметров, и если они не являются этими стандартными типами, они будут просто отображаться как атрибуты, такие как {id: 'custom-id'} будут отображаться как id="custom-id" в теге HTML. Это также можно использовать для включения структурированных данных, таких как json-ld, через addInlineJs(), используя {type: 'application/ld+json'}.

Примеры⚓︎

Например:

{% do assets.addCss('page://01.blog/assets-test/example.css?foo=bar', { priority: 20, loading: 'inline', position: 'before'}) %}
+

Будет отрендерено как:

<style>
+h1.blinking {
+    text-decoration: underline;
+}
+</style>
+<link.....
+

Другой пример:

{% do assets.addJs('page://01.blog/assets-test/example.js', {loading: 'async', id: 'custom-css'}) %}
+

Будет отрендерено как:

<script src="/grav/user/pages/01.blog/assets-test/example.js" async id="custom-css"></script>
+

Пример вставки тега link:

{% do assets.addLink('theme://images/favicon.png', { rel: 'icon', type: 'image/png' }) %}
+{% do assets.addLink('plugin://grav-plugin/build/js/vendor.js', { rel: 'modulepreload' }) %}
+

Будет отрендерено как:

<link rel="icon" type="image/png" href="/user/themes/quark/images/favicon.png">
+<link href="/user/plugins/grav-plugin/build/js/vendor.js" rel="modulepreload">
+

Рендеринг активов⚓︎

Следующее позволяет отображать текущее состояние ресурсов CSS и JavaScript.

Визуализирует CSS-активы, добавленные в группу менеджера активов (по умолчанию head). Варианты таковы

  • loading: inline если все активы в этой группе должны быть встроены (по умолчанию: отображать каждый актив в соответствии с его опцией position)

  • link attributes, см. ниже (по умолчанию: {'type': 'text/css', 'rel': 'stylesheet'}). Эффективен, только если inline не используется в качестве параметра рендеринга этой группы

Когда include_link включен, что происходит по умолчанию, вызов css() будет также распространяться на вызов link().

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

Если конвейерная обработка включена в конфигурации, ресурсы в позиции конвейера объединяются в том порядке, в котором были добавлены ресурсы, а затем обрабатываются в соответствии с конфигурацией конвейера.

Каждый актив отображается либо как ссылка таблицы стилей, либо как встроенный, в зависимости от параметра loading актива и от того, используется ли для рендеринга этой группы параметр {'loading':inline'}. CSS, добавленный с помощьюaddInlineCss(), по умолчанию будет отображаться в позицииafter, но вы можете настроить его для рендеринга перед конвейерным выводом с помощьюposition: before`

Выдает ссылки на активы, которые были добавлены в группу менеджера активов (по умолчанию head). Не рекомендуется использовать группу, отличную от head, именно в ней браузер ожидает найти и обработать тег.

В отличие от других методов добавления активов, link() не поддерживает конвейеризацию и не поддерживает inline.

js(group, [options], include_js_module = true)⚓︎

Renders JavaScript assets that have been added to an Asset Manager's group (default is head). Options are

  • loading: inline если все активы в этой группе должны быть встроены (по умолчанию: отображать каждый актив в соответствии с его опцией position)

  • script attributes, см. ниже (по умолчанию: {'type': 'text/javascript'}). Эффективен, только если inline не используется в качестве параметра рендеринга этой группы

Когда include_js_module включен, что происходит по умолчанию, вызов js() будет также распространяться на вызов jsModule().

Если конвейеризация отключена в конфигурации, активы группы визуализируются индивидуально, упорядоченные по приоритету активов (от высокого к низкому), а затем в порядке добавления активов.

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

Каждый актив отображается либо как ссылка таблицы стилей, либо как встроенный, в зависимости от параметра loading актива и от того, используется ли для рендеринга этой группы параметр {'loading':inline'}. Обратите внимание, что единственный способ встроить конвейер JS — это использовать встроенную загрузку в качестве опции методаjs(). JS, добавленный с помощьюaddInlineJs(), по умолчанию будет отображаться в позицииafter, но вы можете настроить его для рендеринга перед конвейерным выводом с помощьюposition: before`

jsModule(group, [options])⚓︎

Работает точно так же, как рендерер js(), но для модулей JavaScript. Атрибутом типа скрипта по умолчанию является type="module", даже при рендеринге inline.

all(group, [options])⚓︎

Выравнивает все вышеперечисленные активы в порядке их следования: css(), link(), js(), jsModule().

Это рекомендуемый способ включения отложенных активов в ваш основной файл twig (обычно base.html.twig).

{% block assets deferred %}
+  {{ assets.all()|raw }}
+{% endblock %}
+

Именованные активы и коллекции⚓︎

Теперь у Grav есть мощная функция named assets, которая позволяет вам регистрировать коллекцию CSS и JavaScript ресурсов по имени. Затем вы можете просто добавить эти активы в менеджер активов через имя, под которым вы зарегистрировали коллекцию. Grav поставляется с предварительно настроенным jQuery, но имеет возможность определять собственные коллекции в файле system.yaml, которые будут использоваться любой темой или плагином:

assets:
+  collections:
+    jquery: system://assets/jquery/jquery-2.1.3.min.js
+    bootstrap:
+        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css
+        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css
+        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js
+

Вы также можете использовать метод registerCollection() программным способом.

$assets = $this->grav['assets'];
+$bootstrapper_bits = [https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css,
+                      https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css,
+                      https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js];
+$assets->registerCollection('bootstrap', $bootstrap_bits);
+$assets->add('bootstrap', 100);
+

Пример этого действия можно найти в плагине bootstrapper.

Коллекции с атрибутами⚓︎

Иногда может потребоваться указать пользовательские и/или другие атрибуты для определённых элементов коллекции, например, если вы загружаете ресурсы с удаленного CDN и хотите включить проверку целостности (SRI). Это возможно, если рассматривать значение именованного актива как массив, где ключом является местоположение актива, а значением — список дополнительных атрибутов. Например:

assets:
+  collections:
+    jquery_and_ui:
+        https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js:
+            integrity: 'sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ=='
+            group: 'bottom'
+        https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js:
+            integrity: 'sha512-uto9mlQzrs59VwILcLiRYeLKPPbS/bT71da/OEBYEwcdNUk8jYIy+D176RYoop1Da+f9mvkYrmj5MCLZWEtQuA=='
+            group: 'bottom'
+

Затем, после того как вы добавите JS в свой twig через {% do assets.addJs('jquery_and_ui', { defer: true }) %}, активы будут загружаться как:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" defer="1" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ=="></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" defer="1" integrity="sha512-uto9mlQzrs59VwILcLiRYeLKPPbS/bT71da/OEBYEwcdNUk8jYIy+D176RYoop1Da+f9mvkYrmj5MCLZWEtQuA=="></script>
+

Обратите внимание, что атрибут defer был определен на уровне twig и применен ко всем активам в коллекции. Это связано с тем, что Grav объединит атрибуты как из twig, так и из определения yaml, отдавая приоритет тем, которые указаны в определении yaml.

Если бы актив jquery-ui.min.js также включал атрибут defer: null, тогда этот атрибут имел бы приоритет над defer: 1.

Сгруппированные активы⚓︎

Менеджер активов позволяет вам передавать необязательную группу (group) как часть массива параметров при добавлении активов. Хотя это не очень важно для CSS, это особенно полезно для JavaScript, где вам может потребоваться указать некоторые файлы JS или встроенный JS в заголовке, а некоторые - в нижней части страницы.

Чтобы воспользоваться этой возможностью, необходимо указать группу при добавлении актива и использовать синтаксис параметров:

{% do assets.addJs('theme://js/example.js', {'priority':102, 'group':'bottom'}) %}
+

Затем, чтобы эти активы в нижней группе отображались, вы должны добавить в свою тему следующее:

{{ assets.js('bottom') }}
+

Если для актива не определена группа, то по умолчанию используется группа head. Если ни одна группа не настроена для рендеринга, то будет отрисована группа head. Это гарантирует, что новая функциональность на 100% обратно совместима с существующими темами.

То же самое относится и к CSS файлам:

{% do assets.addCss('theme://css/ie8.css', {'group':'ie'}) %}
+

и рендеринг:

{{ assets.css('ie') }}
+

Изменение атрибутов визуализируемых активов CSS/JS⚓︎

CSS по умолчанию добавлен с использованием атрибута rel="stylesheet" и type="text/css", в то время как JS имеет type="text/javascript".

Чтобы изменить настройки по умолчанию или добавить новые атрибуты, необходимо создать новую группу активов и сказать Grav, чтобы она отобразила его с этим атрибутом.

Пример редактирования атрибута rel на группе активов:

{% do assets.addCSS('theme://whatever.css', {'group':'my-alternate-group'}) %}
+...
+{{ assets.css('my-alternate-group', {'rel': 'alternate'}) }}
+

Встраивание активов⚓︎

Встраивание позволяет размещать критический код CSS (и JS) непосредственно в документе HTML, что позволяет браузеру немедленно отображать страницу, не дожидаясь загрузки внешней таблицы стилей или скрипта. Это может заметно улучшить производительность сайта для пользователей, особенно в мобильных сетях. Подробности можно найти в этой статье об оптимизации доставки CSS.

Однако прямая вставка кода CSS или JavaScript в шаблон страницы не всегда возможна, например, когда используется Sass-совместимый CSS. Хранение ресурсов CSS и JS в отдельных файлах также упрощает обслуживание. Использование встроенных возможностей Asset Manager позволяет оптимизировать скорость без изменения способа хранения ваших активов. Могут быть встроены даже целые конвейеры.

Чтобы встроить содержимое файла ресурса, используйте опцию {'loading': 'inline'} с addCss() или addJs(). Вы также можете встроить все ресурсы при рендеринге группы с помощью js() или css(), которые предоставляют тот же параметр.

Пример использования system.yaml для определения коллекций ресурсов, названных в соответствии с требованиями к загрузке ресурсов, при этом app.css является файлом CSS, сгенерированным Sass:

assets:
+  collections:
+    css-inline:
+      - 'http://fonts.googleapis.com/css?family=Ubuntu:400|Open+Sans:400,400i,700'
+      - 'theme://css-compiled/app.css'
+    js-inline:
+      - 'https://use.fontawesome.com/<embedcode>.js'
+    js-async:
+      - 'theme://foundation/dist/assets/js/app.js'
+      - 'theme://js/header-display.js'
+

Шаблон вставляет каждую коллекцию в соответствующую группу, а именно head и head-link для CSS, head и head-async для JS. Группа по умолчанию head используется для последовательной загрузки в каждом случае:

{% block stylesheets %}
+    {% do assets.addCss('css-inline') %}
+    {% do assets.addCss('css-link', {'group': 'head-link'}) %}
+{% endblock %}
+{{ assets.css('head-link') }}
+{{ assets.css('head', {'loading': 'inline'}) }}
+{% block javascripts %}
+    {% do assets.addJs('js-inline') %}
+    {% do assets.addJs('js-async', {'group': 'head-async'}) %}
+{% endblock %}
+{{ assets.js('head-async', {'loading': 'async'}) }}
+{{ assets.js('head', {'loading': 'inline'}) }}
+

Статические активы⚓︎

Иногда возникает необходимость ссылки на активы без использования Менеджера активов. Для этого имеется вспомогательный метод url(). Примером может служить, если вы хотите сослаться на изображение из темы. Синтаксис для этого:

<img src="{{ url("theme://" ~ widget.image) }}" alt="{{ widget.text|e }}" />
+

Метод url() принимает необязательный второй параметр true или false, чтобы включить URL для включения чертежа и домена. По умолчанию предполагается, что это значение false, в результате чего получается только относительный URL. Например:

url("theme://some/extra.css", true)
+
\ No newline at end of file diff --git a/themes/customization/index.html b/themes/customization/index.html new file mode 100644 index 00000000..b674c850 --- /dev/null +++ b/themes/customization/index.html @@ -0,0 +1,30 @@ + Кастомизация - Документация Grav CMS на русском

Кастомизация⚓︎

Есть много способов настроить тему, и Grav действительно не ограничивает ваш творческий потенциал в этом отношении. Тем не менее, есть несколько функций и некоторые функциональные возможности, которые Grav предоставляет, чтобы сделать этот процесс проще.

Пользовательский CSS⚓︎

Самый простой способ настроить тему - предоставить свой собственный файл custom.css. Тема Quark по умолчанию предоставляет ссылку на файл css/custom.css через менеджер активов. К счастью, менеджер активов делает это за нас, и если файл не найден, ссылка не добавляется в HTML.

Однако, если вы предоставите файл с именем custom.css в папке css/, он будет взят и на него будет ссылаться. Вам просто нужно убедиться, что вы предоставили элементы CSS с достаточной специфичностью, чтобы переопределить CSS по умолчанию. Например:

custom.css
body a {
+  color: #cc0000;
+}
+

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

Пользовательский SCSS/LESS⚓︎

Следующим шагом после предоставления пользовательского файла CSS является использование файла _custom.scss. Quark написан с использованием SCSS, который представляет собой препроцессор, совместимый с CSS, который позволяет более эффективно писать CSS за счёт использования переменных, вложенных структур, фрагментов, импортов, операторов и примесей.

Сначала это может показаться немного пугающим, но вы можете использовать столько или меньше SCSS, сколько захотите, и как только вы начнете, у вас возникнут проблемы с возвращением к традиционному CSS. Обещаю!

В теме Quark есть папка scss/, содержащая множество файлов .scss. Они должны быть скомпилированы в папку css-compiled/.

Вы можете создать файл с именем scss/theme/_custom.scss и импортировать его в файл theme.scss внизу, используя @import 'theme/custom';. Размещение кода в этом файле дает несколько больших преимуществ:

  1. Полученные изменения будут скомпилированы в файл css-compiled/theme.min.css вместе со всеми остальными CSS.
  2. У вас есть доступ ко всем переменным и добавкам, которые доступны для любого другого SCSS, используемого в теме.
  3. У вас есть доступ ко всем стандартным функциям и функциям SCSS, облегчающим разработку.

Примером этого файла может быть:

_custom.scss
body {
+  a {
+    color: darken($core-accent, 30%);
+  }
+}
+

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

Wellington SCSS⚓︎

Wellington это собственная оболочка для libsass, доступная как для Linux, так и для MacOS. Он обеспечивает гораздо более быстрое решение для компиляции SCSS, чем компилятор scss по умолчанию на основе Ruby. Под «быстрее» мы подразумеваем примерно в 20 раз быстрее!. Очень просто установить (через brew):

brew install wellington
+

Чтобы использовать это преимущество для компиляции папки scss в папку css-compiled, как в примере выше, вы можете использовать этот черновик.

Wellington это то, что мы использовали для всех тем Team Grav, и оно отлично работает!

Наследование темы⚓︎

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

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

Есть два способа наследования существующей темы:

  1. Использование интерфейса командной строки (CLI) с подключаемым модулем DevTools.
  2. Вручную.

Наследование с использованием CLI⚓︎

Как описано в Учебнике по темам, вы можете создать новую тему, используя плагин DevTools. Но вы также можете наследовать существующую тему. Процедура проста.

  1. Установите плагин DevTools, если это ещё не сделано.
  2. Затем следуйте процедуре создания базовой темы, но когда скрипт предложит выбрать тип шаблона (Please choose a template type), введите inheritance («наследование»). Если Quark единственная тема, она будет отображаться как 0. Поэтому введите 0, чтобы наследовать от Quark. Будет создана ваша новая унаследованная тема.
  3. Скопируйте все параметры из файла YAML темы, который вы наследуете (или из папки user/config/themes, если вы её настроили), вверху вновь созданного файла конфигурации YAML вашей темы: / user/themes/mytheme/mytheme.yaml.
  4. Скопируйте раздел form из /user/themes/quark/blueprints.yaml' в/user/themes/mytheme/blueprints.yaml` для того, чтобы включить настраиваемые элементы темы в админке. (Или просто замените файл и отредактируйте его содержимое.)
  5. Измените тему по умолчанию, чтобы использовать новую mytheme, отредактировав параметр pages: theme: в вашем файле конфигурации user/config/system.yaml:
pages:
+ theme: mytheme
+

Наследование вручную⚓︎

Для этого вам необходимо выполнить следующие шаги:

  1. Создайте новую папку: user/themes/mytheme для размещения вашей новой темы.
  2. Скопируйте файл YAML темы из темы, которую вы наследуете (или из папки user/config/themes, если вы её настроили), в /user/themes/mytheme/mytheme.yaml и добавьте следующий контент (заменив user/themes/quark названием темы, которую вы наследуете):
streams:
+  schemes:
+    theme:
+      type: ReadOnlyStream
+      prefixes:
+        '':
+          - user/themes/mytheme
+          - user/themes/quark
+
  1. Скопируйте файл /user/themes/quark/blueprints.yaml в /user/themes/mytheme/blueprints.yaml, чтобы включить настраиваемые элементы темы в админку.

  2. Измените тему по умолчанию, чтобы использовать новую mytheme, отредактировав параметр pages: theme: в вашем файле конфигурации user/config/system.yaml:

pages:
+  theme: mytheme
+
  1. Создайте новый файл класса темы, который можно использовать для добавления расширенной функциональности, управляемой событиями. Создайте файл user/themes/mytheme/mytheme.php:
<?php
+namespace Grav\Theme;
+
+class Mytheme extends Quark
+{
+    // Some new methods, properties etc.
+}
+?>
+

Теперь вы создали новую тему под названием mytheme и настроили потоки так, чтобы сначала они просматривали тему mytheme, а затем пробовали quark. По сути, Quark является базовой темой для этой новой темы.

Затем вы можете предоставить только те файлы, которые вам нужны, включая JS, CSS или даже модификации файлов шаблонов Twig, если хотите.

Использование SCSS⚓︎

Чтобы изменить определённые файлы SCSS, нам нужно использовать небольшую конфигурацию, чтобы он знал, что сначала нужно искать в вашем новом местоположении mytheme, а затем - quark. Для этого требуется несколько вещей.

  1. Во-первых, вам нужно скопировать основной файл SCSS из quark, который содержит все вызовы @ import для различных субфайлов. Итак, скопируйте файл theme.scss из quark/ scss/ в папку mytheme/scss/.
  2. Находясь внутри файла theme.scss, измените начало всех строк импорта на @import '/quark/scss/theme/';, чтобы он знал, что нужно использовать файлы из Quark. Так, например, первая строка будет @import '/quark/scss/theme/variables';.
  3. Добавьте @import 'theme/custom'; в самый конец файла theme.scss.
  4. Следующим шагом является создание файла, расположенного по адресу mytheme/scss/theme/_custom.scss. Вот куда пойдут ваши модификации.
  5. Скопируйте файлы gulpfile.js иpackage.json в базовую папку новой темы.

Чтобы скомпилировать новый scss для mytheme, вам нужно будет открыть терминал и перейти в папку темы. Quark использует gulp для компиляции sass, поэтому вам понадобятся установленные и пряжа для зависимостей. Запустите npm install -g gulp, yarn install, а затем gulp watch. Теперь любые изменения, внесенные в файлы, будут перекомпилированы.

\ No newline at end of file diff --git a/themes/theme-basics/index.html b/themes/theme-basics/index.html new file mode 100644 index 00000000..1bad25cb --- /dev/null +++ b/themes/theme-basics/index.html @@ -0,0 +1,74 @@ + Основы тем - Документация Grav CMS на русском

Основы тем⚓︎

Темы в Grav довольно простые и очень гибкие, потому что они созданы с помощью мощного движка шаблонов Twig. Каждая тема создается с помощью комбинации файлов Twig (смесь PHP-кода и HTML), называемых шаблонами, и CSS. Обычно мы используем расширение CSS Sass для создания наших файлов CSS, но ничто не мешает вам использовать Less, или даже обычный CSS. Всё сводится к вашим личным предпочтениям.

Страницы контента и шаблоны Twig⚓︎

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

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

Давайте рассмотрим простой пример. Если вы установили пакет Grav Base, вы заметите, что в папке user/pages/01.home у вас есть файл с именем default.md, который содержит содержимое страницы, основанное на разметке. Имя этого файла, т. е. default сообщает Grav, что эта страница должна отрисовываться с помощью шаблона Twig под названием default.html.twig, который находится в папке templates/ темы.

Имена шаблонов страниц должны быть строчными, например «default», «blog» и т. д.

Если бы у вас был файл страницы под названием blog.md, Grav попыталась бы отрисовать его с помощью шаблона Twig: <your_theme>/templates/blog.html.twig.

Имена файлов в Grav не отображаются на передней панели Grav. Только имена папок. Не волнуйтесь, если все ваши записи в блоге будут иметь одно и то же имя файла. Это нормально.

Организация темы⚓︎

Определение и конфигурация⚓︎

Каждая тема должна иметь файл определения под названием blueprints.yaml, который содержит некоторую информацию о теме. Дополнительно он может предоставлять определения form для использования в админке для редактирования опций темы. Тема Antimatter имеет следующий файл blueprints.yaml:

name: Antimatter
+slug: antimatter
+type: theme
+version: 1.6.7
+description: 'Antimatter is the default theme included with **Grav**'
+icon: empire
+author:
+  name: Team Grav
+  email: devs@getgrav.org
+  url: https://getgrav.org
+homepage: https://github.com/getgrav/grav-theme-antimatter
+demo: https://demo.getgrav.org/blog-skeleton
+keywords: antimatter, theme, core, modern, fast, responsive, html5, css3
+bugs: https://github.com/getgrav/grav-theme-antimatter/issues
+license: MIT
+
+dependencies:
+  - { name: grav, version: '>=1.6.0' }
+
+form:
+  validation: loose
+  fields:
+    dropdown.enabled:
+      type: toggle
+      label: Dropdown in navbar
+      highlight: 1
+      default: 1
+      options:
+        1: Enabled
+        0: Disabled
+      validate:
+        type: bool
+

Если вы хотите использовать опции настройки темы, вы должны предоставить настройки по умолчанию в файле под названием your_theme.yaml. Например:

enabled: true
+color: blue
+

Опция color: blue в файле конфигурации на самом деле ничего не делает. Она просто используется в качестве примера того, как переопределить настройки.

Для получения более подробной информации о доступных формах, которые можно создать, обратитесь к главе Формы. Вы также должны предоставить изображение 300px x 300px и назвать его thumbnail.jpg в корневой части темы. Оно появится в разделе выбора тем в вашей панели администрирования.

Шаблоны⚓︎

Нет правил относительно структуры темы Grav, за исключением того, что в папке templates/ должны быть соответствующие Twig-шаблоны для каждого типа страниц, которые вы используете в вашем контенте.

Из-за такой тесной связи между содержанием страницы и шаблонами Twig в теме часто имеет смысл разрабатывать темы в сочетании с содержанием, с которым они предназначены для использования. Хорошим способом создания тем general является поддержка типов шаблонов, используемых пакетами Skeleton, которые доступны на нашей странице загрузки. Например, поддержка: default, blog, error, item и modular.

Вообще говоря, корень папки templates/ должен использоваться для размещения поддерживаемых первичных шаблонов, затем создается подпапка partials/ для размещения частей, или меньшего шаблона chunks.

Если вы хотите поддерживать модульные шаблоны в вашей теме, вам также следует создать подпапку шаблонов под названием modular/ и хранить в ней ваши модульные файлы шаблонов Twig.

История поддержки форм та же самая. Создайте ещё одну подпапку под названием forms/ и храните в ней любые шаблоны пользовательских форм.

SCSS / LESS / CSS⚓︎

Опять же, здесь нет ничего сложного, но солидная практика заключается в том, чтобы иметь подпапку под названием scss/, если вы хотите разрабатывать с Sass, или less/, если вы предпочитаете Less вместе с папкой css/ для размещения статических CSS-файлов, и папку css-compiled/ для любых автоматически генерируемых файлов из ваших компиляций Sass или Less.

Как вы организуете свои файлы здесь, полностью зависит от вас. Не стесняйтесь следовать нашему примеру в теме по умолчанию (в Grav 1.6.x) antimatter, поставляемой с пакетом Grav Base для некоторых идей. Мы используем вариант Sass scss, который больше похож на CSS, и, откровенно говоря, более естественный для написания.

Чтобы установить Sass на свой компьютер, просто следуйте инструкциям на sass-lang.com.

  1. Выполните простой скрипт scss shell, набрав ./scss.sh из корня темы.
  2. Либо запустите команду напрямую: scss --source-map --watch scss:css-compiled, что одно и то же.

По умолчанию, это скомпилирует ваши scss-файлы в папку css-compiled/. Затем вы можете обратиться к результирующему файлу CSS в своей теме.

Чертежи⚓︎

Папка blueprints/ используется для определения форм для опций и конфигурации для каждого из файлов шаблонов. Они используются в административной панели и являются необязательными. Тема на 100% функциональна без них, но они не будут редактироваться через панель администрирования, если не будут предоставлены.

События тем и плагинов⚓︎

Ещё одна мощная функция, которая являетсянеобязательной — возможность для темы взаимодействовать с Grav через плагины архитектуры. Короче говоря, во время инициализации Grav в последовательности есть несколько точек, где можно «перехватить» свой собственный кусок кода. Это может быть полезно, например, для определения дополнительных ярлыков путей в вашей теме при инициализации Twig, чтобы вы могли использовать их в ваших Twig шаблонах. Глава Плагины содержит больше информации о системе плагинов и доступных хуках событий. Чтобы использовать эти хуки в вашей теме, просто создайте файл под названием mytheme.php и используйте следующий формат:

<?php
+
+namespace Grav\Theme;
+
+use Grav\Common\Theme;
+
+class MyTheme extends Theme
+{
+
+    public static function getSubscribedEvents()
+    {
+        return [
+            'onThemeInitialized' => ['onThemeInitialized', 0]
+        ];
+    }
+
+    public function onThemeInitialized()
+    {
+        if ($this->isAdmin()) {
+            $this->active = false;
+            return;
+        }
+
+        $this->enable([
+            'onTwigSiteVariables' => ['onTwigSiteVariables', 0]
+        ]);
+    }
+
+    public function onTwigSiteVariables()
+    {
+        $this->grav['assets']
+            ->addCss('plugin://css/mytheme-core.css')
+            ->addCss('plugin://css/mytheme-custom.css');
+
+        $this->grav['assets']
+            ->add('jquery', 101)
+            ->addJs('theme://js/jquery.myscript.min.js');
+    }
+}
+

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

Другие папки⚓︎

Мы рекомендуем создать отдельные папки в корне вашей темы для images/, fonts/ и js/, которые будут содержать изображения, любые пользовательские веб-шрифты и необходимые файлы JavaScript.

Пример темы⚓︎

Давайте используем тему Antimatter по умолчанию в качестве примера. Ниже вы можете увидеть общую структуру этой темы:

Папки темы

В этом примере фактические файлы css, css-compiled, fonts, images, js, scss и templates были проигнорированы, чтобы сделать их более читабельными. Важно отметить общую структуру темы.

\ No newline at end of file diff --git a/themes/theme-basics/theme-folders.png b/themes/theme-basics/theme-folders.png new file mode 100644 index 00000000..c77132bf Binary files /dev/null and b/themes/theme-basics/theme-folders.png differ diff --git a/themes/theme-configuration/index.html b/themes/theme-configuration/index.html new file mode 100644 index 00000000..dd8d0761 --- /dev/null +++ b/themes/theme-configuration/index.html @@ -0,0 +1,34 @@ + Конфигурация темы - Документация Grav CMS на русском

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

В Grav можно легко получить доступ к настройке тем и информации о чертежах из ваших файлов Twig и PHP.

Доступ к информации о чертеже темы⚓︎

Информацию из файла blueprints.yaml текущей активной темы можно получить из объекта theme. В качестве примера возьмем следующий файл blueprints.yaml:

name: Antimatter
+slug: antimatter
+type: theme
+version: 1.7.0
+description: "Antimatter is the default theme included with **Grav**"
+icon: empire
+author:
+  name: Team Grav
+  email: devs@getgrav.org
+  url: https://getgrav.org
+homepage: https://github.com/getgrav/grav-theme-antimatter
+demo: http://demo.getgrav.org/blog-skeleton
+keywords: antimatter, theme, core, modern, fast, responsive, html5, css3
+bugs: https://github.com/getgrav/grav-theme-antimatter/issues
+license: MIT
+

Вы можете получить доступ к любому из этих элементов через theme, используя стандартный dot-синтаксис:

Author Email: {{ theme.author.email }}
+Theme License: {{ theme.license }}
+

Вы также можете получить эти же значения из плагина Grav с синтаксисом PHP:

<?php
+
+$theme_author_email = $this->grav['theme']['author']['email'];
+$theme_license = $this->grav['theme']['license'];
+

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

У темы тоже есть файлы конфигурации. Файл конфигурации темы называется <themename>.yaml. Файл по умолчанию находится в корневой папке темы (user/themes/<themename>).

Настоятельно рекомендуется не изменять файл YAML по умолчанию для темы, а переопределить настройки в папке user/config. Это гарантирует, что исходные настройки темы останутся нетронутыми, что позволит вам быстро получить доступ к изменениям и/или вернуться к ним при необходимости.

Например, давайте рассмотрим тему антиматерии. По умолчанию в корневой папке темы есть файл под названием antimatter.yaml. Содержимое этого файла конфигурации выглядит следующим образом:

enabled: true
+color: blue
+

Это простой файл, но он дает вам представление о том, что вы можете делать с настройками конфигурации темы. Давайте переопределим эти настройки и добавим новые.

Итак, создайте файл в следующем месте: user/config/themes/antimatter.yaml. В этот файл поместите следующее содержимое:

Заметьте, что enabled здесь не повторяется. Если файлы конфигурации объединены, а не просто заменены, это следует указать явно.

color: red
+info: Grav is awesome!
+

Затем в шаблонах вашей темы вы можете получить доступ к этим переменным с помощью объекта grav.theme.config:

<h1 style="color:{{ grav.theme.config.color }}">{{ grav.theme.config.info }}</h1>
+

Это должно отображаться как:

Grav - это круто!

В PHP вы можете получить доступ к конфигурации текущей темы с помощью:

<?php
+
+$color = $this->grav['theme']->config()['color'];
+$info = $this->grav['theme']->config()['info'];
+

Просто! Нет предела конфигурации ваших тем. Вы можете использовать их для чего угодно! :)

Альтернативная нотация⚓︎

Также работают следующие псевдонимы:

{{ config.theme.color_option }}
+
{{ theme_var(color_option) }}
+
{{ grav.themes.antimatter.color_option }} [ИЗБЕГАЙТЕ!]
+

Несмотря на то, что grav.themes.<themename> поддерживается, избегайте этого, потому что такой способ делает невозможным правильное наследование темы.

\ No newline at end of file diff --git a/themes/theme-tutorial/index.html b/themes/theme-tutorial/index.html new file mode 100644 index 00000000..47956a47 --- /dev/null +++ b/themes/theme-tutorial/index.html @@ -0,0 +1,295 @@ + Учебник по темам - Документация Grav CMS на русском

Учебник по темам⚓︎

Часто лучший способ узнать что-то новое — это использовать пример, а затем попытаться построить свое собственное творение из него. Мы собираемся использовать эту же методологию для создания новой темы Grav.

Quark⚓︎

Grav поставляется с чистой и современной темой под названием Quark, которая использует фреймворк Spectre.css.

Spectre.css — лёгкий, отзывчивый и современный CSS-фреймворк для более быстрой и расширяемой разработки.

Spectre предоставляет базовые стили для типографии и элементов, гибкую систему быстрой разметки, чистые CSS-компоненты и утилиты с передовой практикой кодирования и последовательным языком проектирования.

Однако, часто лучше начинать с чего-то ещё более простого.

Pure.css⚓︎

Ради этого учебника мы создадим тему, использующую популярный фреймворк Pure.css, разработанный Yahoo!

Pure — маленький, быстрый и отзывчивый CSS-фреймворк, который содержит основы для разработки вашего сайта без накладных расходов как у более крупных фреймворков, таких как Bootstrap или Foundation. Он содержит несколько модулей, которые могут быть использованы независимо друг от друга, но полный пакет занимает 4 Кб в сжатом и упакованном виде!

Вы можете прочитать обо всех возможностях Pure на сайте проекта Pure.css.

Кроме того, вы должны прочитать статью Important Theme Updates в блоге Grav, которая описывает некоторые ключевые изменения в Grav-темах, чтобы обеспечить лучшую поддержку плагинов в будущем.

Шаг 1 - Установка плагина DevTools⚓︎

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

Первым шагом в создании новой темы является установка плагина DevTools. Это можно сделать двумя способами.

Установка через консольное приложение GPM⚓︎

  • Перейдите в командной строке в корень вашей установки Grav и введите следующую команду:
bin/gpm install devtools
+

Установка через плагин Admin⚓︎

  • После входа в систему просто перейдите к разделу Плагины в боковой панели.
  • Нажмите кнопку Добавить в правом верхнем углу.
  • Найдите DevTools в списке и нажмите кнопку Установить.

Шаг 2 - Создание базовой темы⚓︎

Для этого следующего шага вам действительно нужно быть в командной строке, так как DevTools предоставляет пару CLI-команд для того, чтобы сделать процесс создания новой темы намного проще!

Из корневой части вашей установки Grav введите следующую команду (в консоли Open Server не забудьте добавить php в начале команды):

bin/plugin devtools new-theme
+

В ходе этого процесса вам будет задано несколько вопросов, которые необходимы для создания новой темы:

Мы собираемся использовать pure-blank для создания новой темы, но вы можете создать простой шаблон, наследующий от другой базовой темы.

bin/plugin devtools new-theme
+
+Enter Theme Name: MyTheme
+Enter Theme Description: My New Theme
+Enter Developer Name: Acme Corp
+Enter Developer Email: contact@acme.co
+Please choose a template type
+  [pure-blank ] Basic Theme using Pure.css
+  [inheritance] Inherit from another theme
+  [copy       ] Copy another theme
+ > pure-blank
+
+SUCCESS theme mytheme -> Created Successfully
+
+Path: /www/user/themes/my-theme
+

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

Чтобы увидеть вашу новую тему в действии, вам нужно будет изменить тему по умолчанию с quark на my-theme, так что отредактируйте ваш user/config/system.yaml таким образом:

---
+pages:
+  theme: my-theme
+

Перезагрузите ваш сайт в браузере, и вы увидите, что тема теперь изменилась.

Шаг 3 - Основы темы⚓︎

Теперь мы создали новую базовую тему, которую можно изменять и развивать, давайте разберем её и рассмотрим составляющие. Если вы заглянете в папку user/themes/my-theme, вы увидите:

.
+├── CHANGELOG.md
+├── LICENSE
+├── README.md
+├── blueprints.yaml
+├── css
+│   └── custom.css
+├── fonts
+├── images
+│   └── logo.png
+├── js
+├── my-theme.php
+├── my-theme.yaml
+├── screenshot.jpg
+├── templates
+│   ├── default.html.twig
+│   ├── error.html.twig
+│   └── partials
+│       ├── base.html.twig
+│       └── navigation.html.twig
+└── thumbnail.jpg
+

Это примерная структура, но потребуется ещё несколько вещей.

Необходимые элементы для работы⚓︎

Эти элементы имеют решающее значение, и ваша тема не будет работать надежно, если вы не включите их в свою тему.

blueprints.yaml - файл конфигурации, используемый Grav для получения информации о вашей теме. Он также может определить форму, отображаемую при просмотре деталей темы. Эта форма позволит вам сохранить настройки темы. Подробнее в главе Формы.

  • my-theme.php - этот файл будет назван в соответствии с вашей темой, но может быть использован для размещения любой нужной логики. Вы можете использовать любой хук событий плагинов за исключением onPluginsInitialized(), однако есть хук onThemeInitialized(), который можно использовать в качестве альтернативы.
  • my-theme.yaml - это конфигурация, используемая плагином для установки опций темы.
  • templates/ - это папка, которая содержит шаблоны Twig для отображения ваших страниц.

Требуемые элементы для выпуска⚓︎

Эти пункты необходимы, если вы хотите выпустить свою тему через GPM.

  • CHANGELOG.md - файл, который соответствует формату списка изменений Grav для отображения изменений в релизах.
  • LICENSE - файл лицензии. Чаще всего это MIT, если только у вас нет особой потребности в чем-то другом.
  • README.md - содержит любую документацию по теме. Например, как установить, настроить и использовать.
  • screenshot.jpg - скриншот темы, размером 1009px x 1009px.
  • thumbnail.jpg - скриншот темы, размером 300px x 300px.

Шаг 4 - Базовый шаблон⚓︎

Как вы знаете из предыдущей главы, каждый элемент контента в Grav имеет определенное имя файла, например default.md, который указывает Grav искать шаблон Twig для рендеринга с именем default.html.twig. Можно поместить всё, что вам нужно для отображения страницы в этом одном файле, и он будет работать нормально. Однако есть лучшее решение.

Используя тег Twig Extends, вы можете определить базовый макет с помощью определённых блоков. Это позволяет любому шаблону Twig расширять базовый шаблон и предоставляет определения для любого блока, определенного в базе. Итак, посмотрите на файл templates/default.html.twig и изучите его содержимое:

{% extends 'partials/base.html.twig' %}
+
+{% block content %}
+    {{ page.content }}
+{% endblock %}
+

В действительности здесь происходят две вещи.

Во-первых, этот шаблон расширяет другой шаблон, расположенный в partials/base.html.twig.

Вам не нужно включать templates/ в шаблоны Twig, поскольку Twig уже ищет templates/ в качестве корневого уровня для любого шаблона.

Во-вторых, блок content переопределяется из базового шаблона, и содержимое страницы выводится вместо него.

Для единообразия рекомендуется использовать папку templates/partials для хранения шаблонов Twig, которые представляют либо небольшие фрагменты HTML, либо являются общими. Мы также используем templates/modular для модульных шаблонов и templates/forms для любых форм. Вы можете создать любые подпапки, которые вам нравятся, если вы предпочитаете организовывать свои шаблоны по-другому.

Если вы посмотрите на templates/partials/base.html.twig, вы увидите основную часть HTML-макета:

{% set theme_config = attribute(config.themes, config.system.pages.theme) %}
+<!DOCTYPE html>
+<html lang="{{ grav.language.getActive ?: theme_config.default_lang }}">
+<head>
+{% block head %}
+    <meta charset="utf-8" />
+    <title>{% if header.title %}{{ header.title|e('html') }} | {% endif %}{{ site.title|e('html') }}</title>
+
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    {% include 'partials/metadata.html.twig' %}
+
+    <link rel="icon" type="image/png" href="{{ url('theme://images/logo.png') }}" />
+    <link rel="canonical" href="{{ page.url(true, true) }}" />
+{% endblock head %}
+
+{% block stylesheets %}
+    {% do assets.addCss('https://unpkg.com/purecss@1.0.0/build/pure-min.css', 100) %}
+    {% do assets.addCss('https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css', 99) %}
+    {% do assets.addCss('theme://css/custom.css', 98) %}
+{% endblock %}
+
+{% block javascripts %}
+    {% do assets.addJs('jquery', 100) %}
+{% endblock %}
+
+{% block assets deferred %}
+    {{ assets.css()|raw }}
+    {{ assets.js()|raw }}
+{% endblock %}
+
+</head>
+<body id="top" class="{{ page.header.body_classes }}">
+
+{% block header %}
+    <div class="header">
+        <div class="wrapper padding">
+            <a class="logo left" href="{{ base_url == '' ? '/' : base_url }}">
+                <i class="fa fa-rebel"></i>
+                {{ config.site.title }}
+            </a>
+            {% block header_navigation %}
+            <nav class="main-nav">
+                {% include 'partials/navigation.html.twig' %}
+            </nav>
+            {% endblock %}
+        </div>
+    </div>
+{% endblock %}
+
+{% block body %}
+    <section id="body">
+        <div class="wrapper padding">
+        {% block content %}{% endblock %}
+        </div>
+    </section>
+{% endblock %}
+
+{% block footer %}
+    <div class="footer text-center">
+        <div class="wrapper padding">
+            <p><a href="https://getgrav.org">Grav</a> was <i class="fa fa-code"></i> with <i class="fa fa-heart"></i> by <a href="https://www.rockettheme.com">RocketTheme</a>.</p>
+        </div>
+    </div>
+{% endblock %}
+
+{% block bottom %}
+    {{ assets.js('bottom')|raw }}
+{% endblock %}
+
+</body>
+

Если переменная безопасна для рендеринга и содержит HTML, всегда используйте фильтр |raw, чтобы шаблон работал с включенным экранированием (autoescape).

Очень важно включить параметр autoescape в конфигурации системы или не забыть экранировать каждую переменную в файлах шаблонов, чтобы защитить сайт от XSS-атак.

Шаг 5 - Погружение в детали⚓︎

Пожалуйста, прочитайте код в файле base.html.twig, для лучшего понимания происходящего. Есть несколько ключевых моментов, которые следует отметить:

  1. Переменная theme_config устанавливается с конфигурацией темы. Потому что Twig плохо работает с тире, чтобы извлекать переменные с тире (например config.themes.my-theme), мы используем Twig-функцию attribute() для динамического получения данных my-theme из config.themes.

  2. Элемент <html lang=... установлен на основе активного языка Grav, если он включен, иначе он использует default_lang, как установлено в theme_config.

  3. Синтаксис '{% block head %}{% endblock head %}' определяет область в базовом шаблоне Twig. Обратите внимание, что использование head в теге {% endblock head %} не требуется, но используется здесь для удобства чтения. В этот блок мы помещаем вещи, которые обычно находятся в HTML-теге <head>.

  4. Тег <title> динамически устанавливается на основе переменной title страницы, установленной в заголовке файла. header.title - это метод быстрого доступа, но он эквивалентен page.header.title.

  5. После установки пары стандартных метатегов появляется ссылка для включения partials/metadata.html.twig. Этот файл содержит цикл, который перебирает метаданные страницы. Фактически это объединение метаданных из site.yaml и любых переопределений, специфичных для страницы.

  6. Запись <link rel="icon"... устанавливается путем указания на изображение, зависящее от темы. В этом случае оно находится в каталоге тем под именем images/logo.png. Синтаксис для этого - {{url ('theme: //images/logo.png')}}.

  7. Запись <link rel="canonical"... устанавливает канонический URL-адрес для страницы, который всегда устанавливается на полный URL-адрес страницы через {{ page.url(true, true) }}.

  8. Теперь мы определяем блок под названием stylesheets, и здесь мы используем менеджер активов для добавления нескольких активов. Первый загружает каркас Pure.css. Второй загружает FontAwesome для предоставления полезных иконок. Последняя запись указывает на файл custom.css в папке темы css/. Здесь есть несколько полезных стилей, чтобы вы могли начать, но вы можете добавить больше здесь. Также вы можете добавить другие записи CSS-файлов по мере необходимости.

  9. Вызов {{ assets.css()|raw }} - это то, что запускает шаблон для отображения всех тегов ссылок на CSS.

  10. Блок javascripts, как и блок stylesheets - хорошее место для размещения ваших JavaScript-файлов. В этом примере мы добавляем только библиотеку jquery, которая уже связана с Grav, так что вам не нужно указывать путь к ней.

  11. {{ assets.js()|raw }}выведет все теги JavaScript.

  12. Тэг <body> имеет атрибут класса, который будет выводить всё, что вы установили в переменной body_classes фронтматтера страницы.

  13. В блоке header есть несколько вещей, которые выводят HTML-заголовок страницы. Важно отметить, что логотип имеет гиперссылку на base_url с логикой:{{base_url == '? '/': base_url}}. Это сделано для того, чтобы гарантировать, что если нет подкаталога, ссылка будет просто /.

  14. Название сайта выводится в качестве логотипа в этой теме примера с {{config.site.title}}, но вы можете просто заменить его тегом <img> на логотип, если хотите.

  15. Тег <nav> на самом деле содержит ссылку на partials/navigation.HTML.twig, который содержит логику для циклического перебора любых видимых страниц и отображения их в виде меню. По умолчанию он поддерживает выпадающие меню для вложенных страниц, но это можно отключить с помощью конфигурации темы. Загляните в этот навигационный файл, чтобы получить представление о том, как генерируется меню.

  16. Использование {% block content%} {% endblock%} предоставляет заполнитель, который позволяет нам предоставлять контент из шаблона, расширяющего этот шаблон. Помните, что мы переопределили это в default.html.twig для вывода содержимого страницы.

  17. Блок footer содержит простой нижний колонтитул, вы можете легко изменить его для своих нужд.

  18. Подобно блоку содержимого, {% block bottom%} {% endblock%} предназначен в качестве заполнителя для шаблонов для добавления пользовательских кодов инициализации JavaScript или аналитических кодов. В этом примере мы выводим любой код JavaScript, который был добавлен в группу активов bottom. Подробнее об этом читайте в документации менеджер активов.

Шаг 6 - CSS-файлы темы⚓︎

Вы могли заметить, что в файле partials/base.html.twig мы сделали ссылку на настраиваемую тему CSS через менеджер активов: do assets.add('theme://css/custom.css', 98). Этот файл будет содержать любой настраиваемый CSS, который нам нужен для заполнения пробелов, не предусмотренных платформой Pure.css. Поскольку Pure - это очень минималистичный фреймворк, он предоставляет самое необходимое, но почти не имеет стилей.

  1. В папке user/themes/my-theme/css просмотрите файл custom.css:
/* Core Styles */
+* {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+
+body {
+  font-size: 1rem;
+  line-height: 1.7;
+  color: #606d6e;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  color: #454b4d;
+}
+
+a {
+  color: #1f8cd6;
+  text-decoration: none;
+}
+
+a:hover {
+  color: #175e91;
+}
+
+pre {
+  background: #f0f0f0;
+  margin: 1rem 0;
+  border-radius: 2px;
+}
+
+blockquote {
+  border-left: 10px solid #eee;
+  margin: 0;
+  padding: 0 2rem;
+}
+
+/* Utility Classes */
+.wrapper {
+  margin: 0 3rem;
+}
+
+.padding {
+  padding: 3rem 1rem;
+}
+
+.left {
+  float: left;
+}
+
+.right {
+  float: right;
+}
+
+.text-center {
+  text-align: center;
+}
+
+.text-right {
+  text-align: right;
+}
+
+.text-left {
+  text-align: left;
+}
+
+/* Content Styling */
+.header .padding {
+  padding: 1rem 0;
+}
+
+.header {
+  background-color: #1f8dd6;
+  color: #eee;
+}
+
+.header a {
+  color: #fff;
+}
+
+.header .logo {
+  font-size: 1.7rem;
+  text-transform: uppercase;
+}
+
+.footer {
+  background-color: #eee;
+}
+
+/* Menu Settings */
+.main-nav ul {
+  text-align: center;
+  letter-spacing: -1em;
+  margin: 0;
+  padding: 0;
+}
+
+.main-nav ul li {
+  display: inline-block;
+  letter-spacing: normal;
+}
+
+.main-nav ul li a {
+  position: relative;
+  display: block;
+  line-height: 45px;
+  color: #fff;
+  padding: 0 20px;
+  white-space: nowrap;
+}
+
+.main-nav > ul > li > a {
+  border-radius: 2px;
+}
+
+/*Active dropdown nav item */
+.main-nav ul li:hover > a {
+  background-color: #175e91;
+}
+
+/* Selected Dropdown nav item */
+.main-nav ul li.selected > a {
+  background-color: #fff;
+  color: #175e91;
+}
+
+/* Dropdown CSS */
+.main-nav ul li {
+  position: relative;
+}
+
+.main-nav ul li ul {
+  position: absolute;
+  background-color: #1f8dd6;
+  min-width: 100%;
+  text-align: left;
+  z-index: 999;
+
+  display: none;
+}
+.main-nav ul li ul li {
+  display: block;
+}
+
+/* Dropdown CSS */
+.main-nav ul li ul ul {
+  left: 100%;
+  top: 0;
+}
+
+/* Active on Hover */
+.main-nav li:hover > ul {
+  display: block;
+}
+
+/* Child Indicator */
+.main-nav .has-children > a {
+  padding-right: 30px;
+}
+.main-nav .has-children > a:after {
+  font-family: FontAwesome;
+  content: '\f107';
+  position: absolute;
+  display: inline-block;
+  right: 8px;
+  top: 0;
+}
+
+.main-nav .has-children .has-children > a:after {
+  content: '\f105';
+}
+

Это довольно стандартный CSS-файл, который задает некоторые основные поля, шрифты, цвета и служебные классы. Для отрисовки раскрывающегося меню требуются некоторые базовые стили содержимого и более обширные стили. Не стесняйтесь изменять этот файл по своему усмотрению или даже добавлять новые файлы CSS (просто убедитесь, что вы добавили ссылку в блоке head, следуя примеру с custom.css).

Шаг 7 - Тестирование⚓︎

Чтобы увидеть свою тему в действии, откройте браузер и укажите в нем свой сайт Grav. Вы должны увидеть что-то вроде этого:

Поздравляем, вы создали свою первую тему!

\ No newline at end of file diff --git a/themes/theme-tutorial/pure-theme.png b/themes/theme-tutorial/pure-theme.png new file mode 100644 index 00000000..26f0d76f Binary files /dev/null and b/themes/theme-tutorial/pure-theme.png differ diff --git a/themes/theme-vars/index.html b/themes/theme-vars/index.html new file mode 100644 index 00000000..71b5b9fe --- /dev/null +++ b/themes/theme-vars/index.html @@ -0,0 +1,53 @@ + Переменные темы - Документация Grav CMS на русском

Переменные темы⚓︎

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

В Twig можно вызывать методы, не принимающие параметров, просто вызывая имя метода и опуская скобки (). Если вам нужно передать параметры, вам также нужно указать их после имени метода. Вызов page.content эквивалентен вызову page.content().

Ключевые объекты⚓︎

Существует несколько ключевых объектов, которые доступны для шаблона Twig, и каждый объект имеет набор переменных и функций.

Переменная base_dir⚓︎

{{ base_dir }} возвращает каталог базового файла установки Grav.

Переменная base_url⚓︎

{{ base_url }} возвращает базовый URL сайта, независимо от значения переменной absolute_urls (опция в системной конфигурации).

Переменная base_url_relative⚓︎

{{ base_url_relative }} возвращает базовый URL-адрес сайта, без информации о хосте.

Переменная base_url_absolute⚓︎

{{ base_url_absolute}} возвращает базовый URL-адрес сайта, включая информацию о хосте.

Переменная base_url_simple⚓︎

{{ base_url_simple }} возвращает базовый URL сайта, без кода языка.

Переменная home_url⚓︎

{{ home_url }} особенно полезно использовать для обратной ссылки на домашнюю страницу вашего сайта. Это похоже на base_url, но учитывает ситуацию, когда он пуст.

Переменная html_lang⚓︎

Это вернет текущий активный язык, если он предоставлен, иначе используйте опцию site.default_lang, иначе вернитесь к en.

Переменная theme_dir⚓︎

{{ theme_dir }} возвращает папку каталога файлов текущей темы.

Переменная theme_url⚓︎

{{ theme_url }} возвращает относительный URL к текущей теме.

При связывании с такими активами, как изображения или JavaScript и CSS файлы, рекомендуется использовать функцию url() в сочетании с потоком theme://, как описано на странице Фильтры и функции Twig. Для JavaScript и CSS менеджер активов ещё проще использовать, но в некоторых случаях, например, при динамической или условной загрузке активов, она не будет работать.

Переменная html_lang⚓︎

{{ html_lang }} возвращает активный язык.

Переменная language_codes⚓︎

{{ language_codes }} возвращает список доступных языков сайта.

Объект assets⚓︎

Менеджер активов добавляет простой способ управления CSS и JavaScript на вашем сайте.

{% do assets.addCss('theme://css/foo.css') %}
+{% do assets.addInlineCss('a { color: red; }') %}
+{% do assets.addJs('theme://js/something.js') %}
+{% do assets.addInlineJs('alert("Warming!");') %}
+

Подробнее о менеджере активов.

Рекомендуется использовать тег style и тег script.

Объект config⚓︎

Вы можете получить доступ к любой настройке конфигурации Grav, установленной в YAML-файлах в /user/config, через объект config. Например:

{{ config.system.pages.theme }}{# Возвращает текущую настроенную тему #}
+

Объект site⚓︎

Псевдоним объекта config.site. Представляет конфигурацию, установленную в файле site.yaml.

Объект system⚓︎

Псевдоним объекта config.system. Представляет конфигурацию в основном файле system.yaml.

Объект theme⚓︎

Псевдоним объекта config.theme. Представляет конфигурацию для текущей активной темы. Настройки плагина доступны через config.plugins.

Объект page⚓︎

Поскольку Grav построен с использованием структуры, определенной в папке pages/, каждая страница представлена ​​объектом page.

Объект page, вероятно, является самым важным объектом, с которым вы будете работать, поскольку он содержит всю информацию о текущей странице, на которой вы находитесь.

Полный список методов объекта page доступен на странице API. Вот список наиболее полезных для вас методов.

summary([size])⚓︎

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

{{ page.summary }}
+

или

{{ page.summary(50) }}
+

Третий вариант - использовать разделитель === в вашем содержании. Всё, что перед разделителем, будет использовано в качестве тизера.

content()⚓︎

Возвращает все HTML содержимое вашей страницы.

{{ page.content }}
+

При этом возвращаются заголовки страниц, определённые в YAML-фронтальной материи страницы. Например, страница со следующими заголовками:

title: My Page
+author: Joe Bloggs
+

можно использовать:

Автором этой страницы является: {{ page.header.author }}
+
media()⚓︎

Возвращает массив, содержащий все медиа, связанные со страницей. К ним относятся изображения, видео и другие файлы. Вы можете получить доступ к медиа-методам, как описано в главе Медиа для контента. Поскольку это массив, можно использовать фильтры и функции Twig. Примечание: .svg обрабатываются как файлы, а не изображения, потому что ими нельзя управлять с помощью фильтров изображений Twig.

Получаем конкретный файл или изображение:

{% set my_pdf = page.media['myfile.pdf'] %}
+

Получаем первое изображение:

{% set first_image = page.media.images|first %}
+

Просматриваем все изображения и выводим HTML-тег для их отображения:

{% for image in page.media.images %}
+   {{ image.html }}
+{% endfor %}
+
title()⚓︎

Возвращает заголовок страницы, установленный в переменной title заголовков YAML для самой страницы.

title: My Page
+

Возвращает значение переменной menu в заголовках YAML страницы. Если ничего не указано, по умолчанию используется title.

title: My Page
+menu: my-page
+
visible()⚓︎

Возвращает, видна ли страница. По умолчанию страницы с числовым значением, за которым следует точка, по умолчанию видны (01.somefolder1), тогда как страницы без (subfolder2) не считаются видимыми. Это можно изменить в заголовках страниц:

title: My Page
+visible: true
+
routable()⚓︎

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

title: My Page
+routable: true
+
slug()⚓︎

Возвращает прямое имя, как отображается в URL для этой страницы, например, my-blog-post.

url([include_host = false])⚓︎

Возвращает, например, URL на страницу:

{{ page.url }} {# может вернуть /my-section/my-category/my-blog-post #}
+

или

{{ page.url(true) }} {# может вернуть http://mysite.com/my-section/my-category/my-blog-post #}
+

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

canonical()⚓︎

Возвращает URL-адрес, который является «предпочтительной» версией или ссылкой на конкретную страницу. Это значение по умолчанию будет обычным URL-адресом, если страница не переопределила параметр заголовка страницы canonical:.

route()⚓︎

Возвращает внутреннюю маршрутизацию для страницы. Это в основном используется для внутренней маршрутизации и отправки страниц.

home()⚓︎

Возвращает true или false в зависимости от того, настроена ли эта страница как домашняя. Этот параметр находится в файле system.yaml.

root()⚓︎

Возвращает true или false в зависимости от того, является ли эта страница корневой страницей древовидной иерархии или нет.

active()⚓︎

Возвращает true или false в зависимости от того, является ли эта страница в настоящее время страницей, к которой обращается ваш браузер. Это особенно полезно при навигации, чтобы узнать, является ли текущая страница активной.

modular()⚓︎

Возвращает true или false в зависимости от того, является ли эта страница модульной.

activeChild()⚓︎

Возвращает, содержит ли этот URL-адрес URI URL-адрес активной страницы. Или, другими словами, это URL-адрес этой страницы в текущем URL-адресе. Опять же, это полезно при построении вашей навигации, и вы хотите знать, является ли страница, которую вы повторяете, родительской для активной дочерней страницы.

find(url)⚓︎

Возвращает объект страницы, указанный в URL-адресе маршрута.

{% include 'modular/author-detail.html.twig' with {'page': page.find('/authors/billy-bloggs')} %}
+
collection()⚓︎

Возвращает коллекцию страниц для этого контекста, как определено заголовками страниц коллекции.

{% for child in page.collection %}
+    {% include 'partials/blog_item.html.twig' with {'page':child, 'truncate':true} %}
+{% endfor %}
+
currentPosition()⚓︎

Возвращает индекс текущей страницы относительно элементов того же уровня.

isFirst()⚓︎

Возвращает true или false в зависимости от того, является ли эта страница первым из элементов того же уровня.

isLast()⚓︎

Возвращает true или false в зависимости от того, является ли эта страница последней из элементов того же уровня.

nextSibling()⚓︎

Возвращает следующую страницу из массива элементов того же уровня на основе текущей позиции.

prevSibling()⚓︎

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

nextSibling() и prevSibling() страницы ордеров в стек-подобной структуре. Лучше всего работает в ситуации, когда первый пост в блоге имеет nextSibling null, а prevSibling - предыдущий. Если это направление сортировки сбивает вас с толку, мы предлагаем использовать page.adjacentSibling(-1) для указания на следующую страницу вместо page.nextSibling(), чтобы уменьшить путаницу, которую может вызвать терминология. Вы также можете определить константу в теме и использовать её для лучшей читабельности, например, page.adjacentSibling(NEXT_PAGE).

children()⚓︎

Возвращает массив дочерних страниц для страницы, как определено в структуре содержимого страниц.

orderBy()⚓︎

Возвращает тип сортировки для всех отсортированных дочерних элементов страницы. Значения обычно включают в себя: default, title, date и folder. Это значение обычно настраивается в заголовках страниц.

orderDir()⚓︎

Возвращает направление сортировки для любых отсортированных дочерних страниц. Значения могут быть как asc для восходящего, так и desc для нисходящего. Это значение обычно настраивается в заголовках страниц.

orderManual()⚓︎

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

maxCount()⚓︎

Возвращает максимальное количество страниц для дочерних элементов, которые могут быть возвращены. Это значение обычно настраивается в заголовках страниц.

children.count()⚓︎

Возвращает количество дочерних страниц.

children.current()⚓︎

Возвращает текущий дочерний элемент. Может использоваться во время итераций над дочерними элементами.

children.next()⚓︎

Возвращает следующий элемент в массиве дочерних элементов.

children.prev()⚓︎

Возвращает предыдущий элемент в массиве дочерних элементов.

children.nth(position)⚓︎

Возвращает дочерний элемент, идентифицируемый по position, которая является целым числом от 0 до children.count() - 1 в массиве дочерних элементов.

children.sort(orderBy, orderDir)⚓︎

Переупорядочивает дочерние элементы на основе orderBy (default,title, date иfolder) и orderDir (asc или desc)

parent()⚓︎

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

isPage()⚓︎

Возвращает true или false в зависимости от того, есть ли у этой страницы фактический файл .md, связанный с ней, а не просто папка для маршрутизации.

isDir()⚓︎

Возвращает true или false в зависимости от того, является ли эта страница только папкой для маршрутизации.

id()⚓︎

Возвращает уникальный идентификатор для страницы.

modified()⚓︎

Возвращает метку времени последнего изменения страницы.

date()⚓︎

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

template()⚓︎

Возвращает имя шаблона страницы без расширения .md. Например, default

filePath()⚓︎

Возвращает полный путь к файлу страницы. Например, /Users/yourname/sites/grav/user/pages/01.home/default.md

filePathClean()⚓︎

Возвращает относительный путь от корня сайта Grav. Например, user/pages/01.home/default.md

path()⚓︎

Возвращает полный путь к директории, содержащей страницу. Например, /Users/yourname/sites/grav/user/pages/01.home

folder()⚓︎

Возвращает имя папки для страницы. Например, 01.home

taxonomy()⚓︎

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

{% for tag in page.taxonomy.tag %}
+    <a href="search/tag:{{ tag }}">{{ tag }}</a>
+{% endfor %}
+

Объект pages⚓︎

Весь список методов объекта pages доступен на странице API. Вот список методов, которые вы найдете наиболее полезными.

Объект pages представляет собой вложенное дерево каждого объекта page, о котором знает Grav. Это особенно полезно при создании sitemap, навигации или если вы хотите найти конкретную страницу.

Метод children⚓︎

Возвращает непосредственные дочерние страницы в виде массива объектов pages. Так как объект страниц представляет все дерево, вы можете полностью повторить каждую страницу в Grav страницах/папке.

Получите страницы верхнего уровня для простого меню:

<ul class="navigation">
+    {% for page in pages.children %}
+        {% if page.visible %}
+            <li><a href="{{ page.url }}">{{ page.menu }}</a></li>
+        {% endif %}
+    {% endfor %}
+</ul>
+

Объект media⚓︎

Появился новый объект, который позволяет вам получить доступ к media, находящимся за пределами объектов Page, через потоки PHP из Twig. Это работает аналогично связыванию изображений в содержимом с использованием потоков для доступа к изображениям и обработки мультимедиа для управления темой.

{{ media['user://media/bird.png'].resize(50, 50).rotate(90).html()|raw }}
+

Объект uri⚓︎

Полный список методов объекта Uri доступен на странице API. Вот список наиболее полезных для вас методов.

У объекта Uri есть несколько методов для доступа к частям текущего URI. Для полного URL http://mysite.com/grav/section/category/page.json/param1:foo/param2:bar/?query1=baz&query2=qux:

path()⚓︎

Возвращает часть пути URL-адреса: (Например, uri.path = /section/category/page)

paths()⚓︎

Возвращает массив элементов пути: (Например, uri.paths = [section, category, page])

route([absolute = false][, domain = false])⚓︎

Возвращает маршрут как абсолютный или относительный URL. (Например, uri.route(true) = http://mysite.com/grav/section/category/page или uri.route() = /section/category/page)

params()⚓︎

Возвращает часть URL-адреса params: (Например, uri.params = /param1:foo/param2:bar)

param(id)⚓︎

Возвращает значение определенного параметра. (Например, uri.param('param1') = foo)

query()⚓︎

Возвращает часть запроса URL-адреса: (Например, uri.query = query1=bar&query2=qux)

query(id)⚓︎

Вы также можете получить определённые элементы запроса: (Например, uri.query('query1') = bar)

url([include_host = true])⚓︎

Возвращает полный URL-адрес с хостом или без него. (Например, uri.url(false) = grav/section/category/page/param:foo?query=bar)

extension()⚓︎

Это вернет расширение или вернет html, если не указано: (Например, uri.extension = json)

host()⚓︎

Возвращает хост-часть URL-адреса. (Например, uri.host = mysite.com)

base()⚓︎

Возвращает базовую часть URL-адреса. (Например, uri.base = http://mysite.com)

rootUrl([include_host = false])⚓︎

Возвращает корневой URL-адрес экземпляра Grav. (Например. uri.rootUrl() = http://mysite.com/grav)

referrer()⚓︎

Возвращает информацию о реферере для этой страницы.

Объект header⚓︎

Объект заголовка является псевдонимом для page.header() оригинальной страницы. Это удобный способ получить доступ к оригинальным заголовкам страниц, когда вы петляете по другим объектам page дочерних страниц или коллекций.

Объект content⚓︎

Объект содержимого является псевдонимом page.content() оригинальной страницы.

Для отображения содержимого страницы необходимо:

{{ content|raw }}
+

Объект taxonomy⚓︎

Объект глобальной таксономии, содержащий всю информацию по таксономии сайта.

Объект browser⚓︎

Весь список методов объектов Браузера доступен на странице API. Вот список методов, которые вы найдете наиболее полезными.

Grav имеет встроенную поддержку программного определения платформы, браузера и версии пользователя.

{{ browser.platform}}   # macintosh
+{{ browser.browser}}    # chrome
+{{ browser.version}}    # 41
+

Объект user⚓︎

Вы можете получить доступ к текущему объекту пользователя, вошедшему в систему, косвенно через объект Grav. Это позволяет получить доступ к таким данным, как username, fullname, title и email:

{{ grav.user.username }}  # admin
+{{ grav.user.fullname }}  # Вася Иванов
+{{ grav.user.title }}     # Администратор
+{{ grav.user.email }}     # vasja@ivanoff.com
+

Добавление своих переменных⚓︎

Вы можете легко добавлять пользовательские переменные разными способами. Если переменная является переменной для всего сайта, вы можете поместить её в свой файл user/config/site.yaml, а затем получить к нему доступ через:

{{ site.my_variable }}
+

В качестве альтернативы, если переменная нужна только для определенной страницы, вы можете добавить её в предварительную часть YAML вашей страницы и получить к ней доступ через объект page.header. Например:

title: My Page
+author: Joe Bloggs
+

может использоваться как:

Автор этой страницы: {{ page.header.author }}
+

Добавление своих объектов⚓︎

Расширенный способ добавления пользовательских объектов - использовать плагин для добавления объектов в объект Twig. Это сложная тема, которая более подробно рассматривается в главе о плагинах.

\ No newline at end of file diff --git a/themes/twig-primer/index.html b/themes/twig-primer/index.html new file mode 100644 index 00000000..db834733 --- /dev/null +++ b/themes/twig-primer/index.html @@ -0,0 +1,29 @@ + Шаблонизатор Twig - Документация Grav CMS на русском

Шаблонизатор Twig⚓︎

Twig — быстрый оптимизированный шаблонный движок для PHP. Он разработан с нуля, чтобы облегчить создание шаблонов как разработчику, так и дизайнеру.

Лёгкий синтаксис и простые процессы делают его естественным для всех, кто знаком с Smarty, Django, Jinja, Liquid или Stencil.

Мы используем его для наших шаблонов Grav отчасти из-за его гибкости и присущей ему безопасности. Тот факт, что это один из самых быстрых шаблонизаторов для PHP, сделал его выбор для использования в Grav несомненным.

Twig компилирует шаблоны в простой PHP. Это сокращает количество накладных расходов на PHP до минимума, что приводит к более быстрой и оптимизированной работе разработчиков.

Кроме того, это очень гибкий движок благодаря лексеру и парсеру. Это позволяет разработчику создавать свои собственные теги и фильтры. Лексер и синтаксический анализатор Twig также позволяет создавать собственный предметно-ориентированный язык (DSL).

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

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

Как работает Twig?⚓︎

Twig работает, убирая все «фокусы» из дизайна шаблонов. Шаблоны - это, по сути, просто текстовые файлы, содержащие переменные или выражения, которые заменяются значениями по мере анализа шаблона.

Теги также являются важной частью файла шаблона, так как они контролируют логику самого шаблона.

В Twig есть два основных языковых ограничения.

  • {{ }} выводит результат вычисления выражения;
  • {% %} выполняет инструкции.

Вот базовый шаблон, созданный с помощью Twig:

<!DOCTYPE html>
+<html>
+    <head>
+        <title>Всё о печенюшках</title>
+    </head>
+    <body>
+        Меня зовут {{ name }} и я обожаю печенье.
+        Мои самые любимые виды печенья:
+        <ul>
+        {% for cookie in cookies %}
+            <li>{{ cookie.flavor }}</li>
+        {% endfor %}
+        </ul>
+        <h1>Печенье — лучшее, что придумано человеком!</h1>
+    </body>
+</html>
+

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

Шаблон сначала загружается, а затем передается через lexer, где его исходный код маркируется и разбивается на мелкие кусочки. В этот момент синтаксический анализатор принимает токены и превращает их в абстрактное синтаксическое дерево.

Как только это делается, компилятор превращает это в PHP-код, который затем может быть проанализирован и отображён пользователю.

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

Синтаксис Twig⚓︎

Шаблон Twig имеет несколько ключевых компонентов, которые помогают ему понять, что именно вы хотели бы сделать. К ним относятся теги, фильтры, функции и переменные.

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

Теги⚓︎

Теги говорят Twig, что ему нужно делать. Он позволяет вам установить, какой код Twig должен обрабатывать, а какой — игнорировать во время анализа.

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

Комментарии⚓︎

Теги комментариев (`{#Insert Comment Here#}') используются для установки комментариев, которые существуют в файле шаблона Twig, но фактически не видны конечному пользователю. Они удаляются во время парсинга, не анализируются и не выводятся.

Хорошо использовать эти теги для объяснения того, что делает конкретная строка кода или команда, чтобы другой разработчик или дизайнер в вашей команде мог быстро прочитать и понять.

Вот пример тега комментария, который вы найдете в файле шаблона Twig:

{# Шоколадное печенье — это здорово! Никому не рассказывай! #}
+

Выходные теги⚓︎

Теги вывода ({{ Insert Output Here }}) будут проанализированы и добавлены в сгенерированный вывод. Здесь вы поместите всё, что хотите отобразить на главной странице или в другом генерируемом контенте.

Вот пример выходных тегов, используемых в шаблоне Twig:

Меня зовут {{ name }} и я обожаю печенье.
+

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

Очень важно включить параметр autoescape в конфигурации системы или не забыть экранировать каждую переменную в файлах шаблонов с помощью фильтра |e, чтобы защитить сайт от XSS-атак. Для безопасного HTML-контента используйте фильтр |raw.

Теги действий⚓︎

Теги действий — это путеводители в мире Twig. Эти теги на самом деле что-то делают, в отличие от других, которые либо передают что-то, либо сидят сложа руки в исходном коде, ожидая, пока дизайнер прочитает его.

Теги действий задают переменные, цикл через массивы и условия тестирования. Ваши for и if заявления сделаны с использованием этих меток.

Вот как может выглядеть тег действия в шаблоне Twig:

{% set hour = now | date("G") %}
+{% if hour >= 9 and hour < 17 %}
+    <p>Время печенья!</p>
+{% else %}
+    <p>Пора испечь ещё печенюшек!</p>
+{% endif %}
+

Первоначальный тег действия устанавливает час как текущий час в 24-часовом формате. Это значение затем используется для определения, находится ли оно между 9 утра и 5 вечера. Если это так, то отображается Время для печенюшек!. Если это не так, то вместо этого отображается Пришло время испечь ещё печенья!.

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

Фильтры⚓︎

Фильтры полезны, особенно когда вы используете выходные теги для отображения данных, которые могут быть отформатированы не так, как вы хотите.

Допустим, значение переменной name может включать нежелательные SGML/XML тэги. Вы можете отфильтровать их, используя код, приведенный ниже:

{{ name|striptags }}
+

Функции⚓︎

Функции могут генерировать контент. За ними, как правило, следуют аргументы, которые появляются в скобках, помещаемых непосредственно после вызова функции. Даже если аргумент отсутствует, функция все равно будет иметь скобки (), расположенные непосредственно после нее.

{% if date(cookie.created_at) < date('-2days') %}
+    {# Съешь это! #}
+{% endif %}
+

Ресурсы⚓︎

\ No newline at end of file diff --git a/themes/twig-tags-filters-functions/filters/index.html b/themes/twig-tags-filters-functions/filters/index.html new file mode 100644 index 00000000..a307b250 --- /dev/null +++ b/themes/twig-tags-filters-functions/filters/index.html @@ -0,0 +1,115 @@ + Фильтры Twig - Документация Grav CMS на русском

Фильтры Twig⚓︎

Фильтры Twig применяются к переменным Twig с помощью символа |, за которым следует имя фильтра. Параметры можно передавать так же, как функции Twig, используя круглые скобки.

absolute_url⚓︎

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

{{ <img src="/some/path/to/image.jpg" />'|absolute_url }}
+

array_unique⚓︎

Оболочка для PHP 'array_unique()', которая удаляет дубликаты из массива.

{{ ['foo', 'bar', 'foo', 'baz']|array_unique }}
+

base32_encode⚓︎

Выполняет кодировку base32 для переменной

{{ 'some variable here'|base32_encode` }}
+

base32_decode⚓︎

Выполняет декодирование base32 на переменной

{{ 'ONXW2ZJAOZQXE2LBMJWGKIDIMVZGK'|base32_decode }}
+

base64_encode⚓︎

Выполняет кодировку base64 для переменной

{{ 'some variable here'|base64_encode }}
+

base64_decode⚓︎

Выполняет декодирование base64 на переменной

{{ 'c29tZSB2YXJpYWJsZSBoZXJl'|base64_decode }}
+

basename⚓︎

Возвращает базовое имя пути.

{{ '/etc/sudoers.d'|basename }}
+

camelize⚓︎

Преобразует строку в формат "CamelCase"

{{ 'send_email'|camelize }}
+

chunk_split⚓︎

Разбивает строку на более мелкие куски определенного размера.

{{ 'ONXW2ZJAOZQXE2LBMJWGKIDIMVZGKA'|chunk_split(6, '-') }}
+
ONXW2Z-JAOZQX-E2LBMJ-WGKIDI-MVZGKA-
+

contains⚓︎

Определите, содержит ли конкретная строка другую строку

{{ 'some string with things in it'|contains('things') }}
+

Преобразование значений⚓︎

PHP 7 получает более строгие проверки типов, а это означает, что передача значения неправильного типа теперь может вызвать исключение. Чтобы избежать этого, вы должны использовать фильтры, которые гарантируют, что значение, переданное методу, является допустимым:

string⚓︎

Используйте |string для приведения значения к строке.

int⚓︎

Используйте |int для приведения значения к целому числу.

bool⚓︎

Используйте |bool для приведения значения к логическому.

float⚓︎

Используйте |float для приведения значения к числу с плавающей запятой.

array⚓︎

Используйте |array для приведения значения к массиву.

defined⚓︎

Иногда вы хотите проверить, определена ли какая-либо переменная, а если нет, укажите значение по умолчанию. Например:

{% set header_image_width  = page.header.header_image_width|defined(900) %}
+

При этом переменная header_image_width будет установлена в значение 900, если она не определена в заголовке страницы.

dirname⚓︎

Вернуть имя каталога пути.

{{ '/etc/sudoers.d'|dirname }}
+

ends_with⚓︎

Берет иголку и стог сена и определяет, заканчивается ли стог иглой. Также теперь работает с массивом игл и будет возвращать true, если любой стог сена заканчивается иглой.

{{ 'the quick brown fox'|ends_with('fox') }}
+

fieldName⚓︎

Фильтрация имени поля путем замены записи через точку на запись массива

{{ 'field.name|fieldName }}
+

get_type⚓︎

Получает тип переменной:

{{ page|get_type }}
+

humanize⚓︎

Преобразует строку в более удобный для чтения формат.

{{ 'something_text_to_read'|humanize }}
+

hyphenize⚓︎

Преобразует строку в версию с дефисом.

{{ 'Something Text to Read'|hyphenize }}
+

json_decode⚓︎

Вы можете декодировать JSON, просто применив этот фильтр:

{% set array = '{"first_name": "Guido", "last_name":"Rossum"}'|json_decode %}
+{{ print_r(array) }}
+
stdClass Object
+(
+    [first_name] => Guido
+    [last_name] => Rossum
+)
+

ksort⚓︎

Сортировать карту массива по каждому ключу

array|ksort

{% set ritems = {'orange':1, 'apple':2, 'peach':3}|ksort %}
+{% for key, value in ritems %}{{ key }}:{{ value }}, {% endfor %}
+
Array
+(
+    [apple] => 2
+    [orange] => 1
+    [peach] => 3
+)
+

ltrim⚓︎

Удаляет пробелы в начале строки. Он также может удалить другие символы, с помощью маски (см. https://php.net/manual/ru/function.ltrim.php).

{{ '/strip/leading/slash/'|ltrim('/') }}
+

markdown⚓︎

Возьмите произвольную строку, содержащую разметку, и конвертируйте её в HTML, используя парсер Markdown Grav. Необязательный boolean-параметр:

  • true (по умолчанию): обрабатывать как блок (текстовый режим, содержимое будет заключено в теги <p>)
  • false: обрабатывать как строку (содержимое не будет обернуто никакими тегами)
{{ string|markdown($is_block) }}
+
<div class="div">
+    {{ 'A paragraph with **markdown** and [a link](http://www.cnn.com)'|markdown }}
+</div>
+
+<p class="paragraph">{{'A line with **markdown** and [a link](http://www.cnn.com)'|markdown(false) }}</p>
+

md5⚓︎

Создает md5 хэш для строки

{{ 'anything'|md5 }}
+

modulus⚓︎

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

{{ 7|modulus(3, ['red', 'blue', 'green']) }}
+

monthize⚓︎

Преобразовывает целое число дней в число месяцев

{{ '181'|monthize }}
+

nicecron⚓︎

Получает читаемый человеком выходной сигнал для синтаксиса cron

{{ "2 * * * *"|nicecron }}
+

nicefilesize⚓︎

Выводит размер файла в удобочитаемом для человека формате:

{{ 612394|nicefilesize }}
+

nicenumber⚓︎

Вывод числа в удобочитаемом для человека формате красивых чисел:

{{ 12430|nicenumber }}
+

nicetime⚓︎

Вывод даты в удобочитаемом для человека формате времени:

{{ page.date|nicetime(false) }}
+

Первый аргумент указывает, следует ли использовать описание даты в полном формате. По умолчанию это true.

Вы можете указать второй аргумент false, если хотите удалить относительный дескриптор времени (например, «назад» или «с этого момента» на вашем языке) из результата.

of_type⚓︎

Проверяет тип переменной на параметр:

{{ page|of_type('string') }}
+

ordinalize⚓︎

Добавляет порядковый номер к целому числу (например, 1-е, 2-е, 3-е, 4-е):

{{ '10'|ordinalize }}
+

pad⚓︎

Заполняет строку до определенной длины другим символом. Это обёртка для PHP-функции str_pad().

{{ 'foobar'|pad(10, '-') }}
+

pluralize⚓︎

Преобразовывает строку в английскую множественную версию

{{ 'person'|pluralize }}
+

pluralize также принимает необязательный числовой параметр, который можно ввести, если заранее неизвестно, на сколько элементов будет ссылаться существительное. Значение по умолчанию равно 2, поэтому при опущении будет указана форма множественного числа. Например:

<p>We have {{ num_vacancies }} {{ 'vacancy'|pluralize(num_vacancies) }} right now.</p>
+

Печатает читабельную информацию о переменной

{{ page.header|print_r }}
+

randomize⚓︎

Рандомизирует предоставленный список. Если значение задано в качестве параметра, оно пропустит эти значения и сохранит их в порядке.

{{ array|randomize }}
+
{% set ritems = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']|randomize(2) %}
+{% for ritem in ritems %}{{ ritem }}, {% endfor %}
+
Array
+(
+    [0] => one
+    [1] => two
+    [2] => three
+    [3] => eight
+    [4] => seven
+    [5] => four
+    [6] => five
+    [7] => six
+    [8] => ten
+    [9] => nine
+)
+

regex_replace⚓︎

Полезная оболочка для PHP preg_replace() метод, вы можете выполнять сложные замены регулярных выражений в тексте с помощью этого фильтра:

{{ 'The quick brown fox jumps over the lazy dog.'|regex_replace(['/quick/','/brown/','/fox/','/dog/'], ['slow','black','bear','turtle']) }}
+

По возможности используйте разделитель ~ вместо /. В противном случае вам, скорее всего, придется удвоить определённые символы. Например, ~\/\#.*~~, а не'/\/\#.*/'`, что более соответствует PCRE-синтаксису, используемому PHP.

rtrim⚓︎

{{ '/strip/trailing/slash/'|rtrim('/') }}
+

Удаляет пробелы в конце строки. Он также может удалить другие символы, с использованием маски (см. https://php.net/manual/ru/function.rtrim.php).

singularize⚓︎

Преобразует строку в английскую единственную версию

{{ 'shoes'|singularize }}
+

safe_email⚓︎

Фильтр безопасной почты преобразует адрес электронной почты в символы ASCII, что затрудняет распознавание и захват спам-ботов.

{{ "someone@domain.com"|safe_email }}
+

Пример использования со ссылкой mailto:

<a href="mailto:{{'your.email@server.com'|safe_email}}">
+  Email me
+</a>
+

Сначала вы можете и не заметить разницы, но изучение исходного текста страницы (не используя Инструменты разработчика браузера, фактического исходного текста страницы) выявит кодировку, лежащую в основе символов.

sort_by_key⚓︎

Можно сортировать массив по определенному ключу

{{ array|sort_by_key }}
+
{% set people = [{'email':'fred@yahoo.com', 'id':34}, {'email':'tim@exchange.com', 'id':21}, {'email':'john@apple.com', 'id':2}]|sort_by_key('id') %}
+{% for person in people %}{{ person.email }}:{{ person.id }}, {% endfor %}
+

starts_with⚓︎

Берет иглу и стог сена и определяет, начинается ли стог сена с иглы. Также теперь работает с массивом игл и вернет true, если ни стог сена начинается с иглы.

{{ 'the quick brown fox'|starts_with('the') }}
+

titleize⚓︎

Преобразует строку в формат «Заголовок»

{{ 'welcome page'|titleize }}
+

t⚓︎

Переводит строку на текущий язык

{{ 'MY_LANGUAGE_KEY_STRING'|t }}
+

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

tu⚓︎

Переводит строку на текущий язык, установленный в пользовательских настройках интерфейса администратора.

{{ 'MY_LANGUAGE_KEY_STRING'|tu }}
+

При этом используется языковое поле, установленное в пользовательском yaml.

ta⚓︎

Переводит массив на язык с помощью фильтра |ta. См. Подробный пример в документации.

{{ 'MONTHS_OF_THE_YEAR'|ta(post.date|date('n') - 1) }}
+

tl⚓︎

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

{{ 'SIMPLE_TEXT'|tl(['fr']) }}
+

truncate⚓︎

Вы можете легко создать сокращенную, усеченную версию строки, используя этот фильтр. Единственное обязательное поле - это количество символов, но есть и другие параметры:

{{ 'одно предложение. два предложения'|truncate(5)|raw }}
+

Просто обрезается до 5 символов.

{{ 'одно предложение. два предложения'|truncate(5, true)|raw }}
+

Фильтр |raw следует использовать с элементом заполнения по умолчанию &hellip; (многоточие), чтобы он отображался с автоматическим экранированием Twig

Обрезается до ближайшего конца предложения после 5 символов.

Вы также можете обрезать текст HTML, но сначала следует использовать фильтр |striptags, чтобы удалить любое форматирование HTML, которое может быть нарушено, если вы остановитесь между тегами:

{{ '<span>одно <strong>предложение</strong>. два предложения</span>'|raw|striptags|truncate(25) }}
+

safe_truncate⚓︎

Используйте |safe_truncate для обрезки текста по количеству символов, с сохранением полных слов.

truncate_html⚓︎

Используйте |truncate_html для обрезки HTML по количеству символов, без сохранения полных слов.

safe_truncate_html⚓︎

Используйте |safe_truncate_html для обрезки HTML по количеству символов, с сохранением полных слов.

underscorize⚓︎

Преобразует строку в формат «under_scored»

{{ 'CamelCased'|underscorize }}
+

yaml_encode⚓︎

Дамп/кодирование переменной в синтаксис YAML

{% set array = {foo: [0, 1, 2, 3], baz: 'qux' } %}
+{{ array|yaml_encode }}
+
foo:
+  - 0
+  - 1
+  - 2
+  - 3
+baz: qux
+

yaml_decode⚓︎

Декодирование/парсинг переменной из синтаксиса YAML

{% set yaml = "foo: [0, 1, 2, 3]\nbaz: qux" %}
+{{ yaml|yaml_decode|var_dump }}
+
array(2) {
+  ["foo"]=>
+  array(4) {
+    [0]=>
+    int(0)
+    [1]=>
+    int(1)
+    [2]=>
+    int(2)
+    [3]=>
+    int(3)
+  }
+  ["baz"]=>
+  string(3) "qux"
+}
+
\ No newline at end of file diff --git a/themes/twig-tags-filters-functions/functions/index.html b/themes/twig-tags-filters-functions/functions/index.html new file mode 100644 index 00000000..63f7abfe --- /dev/null +++ b/themes/twig-tags-filters-functions/functions/index.html @@ -0,0 +1,99 @@ + Функции Twig - Документация Grav CMS на русском

Функции Twig⚓︎

Функции Twig вызываются непосредственно с любыми параметрами, передаваемыми через скобки.

array⚓︎

Приводит значение к массиву:

{% set value = array(value) %}
+

array_diff⚓︎

Вычисляет разницу массивов:

{% set diff = array_diff(array1, array2...) %}
+

array_key_value⚓︎

Позволяет добавить пару ключ/значение в ассоциированный массив:

{% set my_array = {fruit: 'apple'} %}
+{% set my_array = array_key_value('meat','steak', my_array) %}
+{{ print_r(my_array) }}
+

array_key_exists⚓︎

Обертка для функции array_key_exists PHP, которая проверяет, существует ли ключ в ассоциативном массиве или нет:

{% set my_array = {fruit: 'apple', meat: 'steak'} %}
+{{ array_key_exists('meat', my_array) }}
+

array_intersect⚓︎

Функция array_intersect обеспечивает пересечение двух массивов или коллекций Grav:

{% set array_1 = {fruit: 'apple', meat: 'steak'} %}
+{% set array_2 = {fish: 'tuna', meat: 'steak'} %}
+{{ print_r(array_intersect(array_1, array_2)) }}
+

array_unique⚓︎

Обертка для PHP array_unique(), которая удаляет дубликаты из массива:

{{ print_r(array_unique(['foo', 'bar', 'foo', 'baz'])) }}
+
Array
+(
+  0 => "foo"
+  1 => "bar"
+  3 => "baz"
+)
+

authorize⚓︎

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

{{ print_r(authorize(['admin.statistics', 'admin.super'])) }}
+

body_class⚓︎

Берет массив классов, и если они не установлены на body_classes, посмотрим, установлены ли они в текущей конфигурации темы.

{% set body_classes = body_class(['header-fixed', 'header-animated', 'header-dark', 'header-transparent', 'sticky-footer']) %}
+

cron⚓︎

Создаёт объект "Cron" из синтаксиса cron:

{{ cron("3 * * * *").getNextRunDate()|date(config.date_format.default) }}
+

dump⚓︎

Берет корректную переменную Twig и выбрасывает её в панели отладчика Grav. Для просмотра значений на вкладке "Сообщения" отладчик должен быть включен.

{{ dump(page.header) }}
+

debug⚓︎

То же, что и dump()

evaluate⚓︎

Функцию evaluate можно использовать для анализа строки как Twig:

{{ evaluate('grav.language.getLanguage') }}
+

evaluate_twig⚓︎

То же, что и evaluate, но будет анализировать и обрабатывать с помощью Twig

{{ evaluate_twig('This is a twig variable: {{ foo }}', {foo: 'bar'}) }}
+

exif⚓︎

Вывод EXIF-данных с изображения на основе его файловой траектории. Для этого нужны эти "медиа": auto_metadata_exif: trueустановлен вsystem.yaml`. Например, в шаблоне Twig:

{% set image = page.media['sample-image.jpg'] %}
+{% set exif = exif(image.filepath, true) %}
+{{ exif.MaxApertureValue }}
+

Это позволило бы записать в камеру значение MaxApertureValue, например, "40/10". Вы всегда можете использовать {{dump(exif)}} для отображения всех доступных данных в отладчике.

Восстановление значения куки-файла с помощью этой функции:

{{ get_cookie('your_cookie_key') }}
+

get_type⚓︎

Получает тип переменной:

{{ get_type(page) }}
+

gist⚓︎

Принимает Github Gist ID и создает соответствующий код для встраивания Gist:

{{ gist('bc448ff158df4bc56217') }}
+

header_var⚓︎

Вспомогательная функция. Возвращает page.header.<variable>.

С учётом параметра в блоке метаданных

---
+title: Home
+---
+

header_var('title') Home

http_response_code⚓︎

Если предоставлен код response_code, то будет возвращен предыдущий код статуса. Если код response_code не предоставлен, то будет возвращен код текущего состояния. Оба эти значения по умолчанию будут иметь код состояния 200, если они используются в среде веб-сервера.

{{ http_response_code(404) }}
+

isajaxrequest⚓︎

Функция isajaxrequest() может быть использована для проверки, установлена ли опция заголовка HTTP_X_REQUESTED_WITH:

json_decode⚓︎

Вы можете декодировать JSON, просто применив этот фильтр:

{{ json_decode({"first_name": "Guido", "last_name":"Rossum"}) }}
+

media_directory⚓︎

Возвращает медиа-объект для произвольной директории. После получения изображениями можно манипулировать так же, как и страницами.

{{ media_directory('theme://images')['some-image.jpg'].cropResize(200,200).html }}
+

nicefilesize⚓︎

Выводите размер файла в удобочитаемом для человека формате.

{{ nicefilesize(612394) }}
+

nicenumber⚓︎

Вывод числа в удобочитаемом для человека формате красивых чисел.

{{ nicenumnber(12430) }}
+

nicetime⚓︎

Вывод даты в удобочитаемом человеком формате времени.

{{ nicetime(page.date) }}
+

nonce_field⚓︎

Генерирует поле с кодом безопасности Grav для формы с требуемым action:

{{ nonce_field('action') }}
+

of_type⚓︎

Проверяет тип переменной на параметр:

{{ of_type(page, 'string') }}
+

pathinfo⚓︎

Разбирает путь в массив:

{% set parts = pathinfo('/www/htdocs/inc/lib.inc.php') %}
+{{ print_r(parts) }}
+
Array
+(
+  [dirname] => /www/htdocs/inc
+  [basename] => lib.inc.php
+  [extension] => php
+  [filename] => lib.inc
+)
+

Печатает переменную в читаемом формате:

{{ print_r(page.header) }}
+

random_string⚓︎

Сгенерирует произвольную строку из требуемого количества символов. Особенно полезно при создании уникального идентификатора или ключа.

{{ random_string(10) }}
+

unique_id⚓︎

Генерирует случайную строку с настраиваемой длиной, префиксом и суффиксом. В отличие от встроенной функции PHP uniqid() и утилиты random_string, эта строка будет сгенерирована действительно уникальной.

{{ unique_id(9) }}
+{{ unique_id(11, { prefix: 'user_' }) }}
+{{ unique_id(13, { suffix: '.json' }) }}
+

range⚓︎

Генерирует массив, содержащий ряд элементов, опционально ступенчатых

{{ range(25, 300, 50) }}
+

read_file⚓︎

Простая функция для чтения файла на основе пути к файлу и его вывода.

{{ read_file('plugins://admin/README.md')|markdown }}
+
# Стандартный плагин админки Grav
+
+Это плагин **админки** для [Grav](https://github.com/getgrav/grav), он представляет собой HTML-интерфейс пользователя, который обеспечивает удобный способ настройки Grav, с возможностью легко создавать и изменять страницы....
+

redirect_me⚓︎

Переадресация на URL-адрес по вашему выбору.

{{ redirect_me('http://google.com', 304) }}
+

regex_filter⚓︎

Выполняет preg_grep на массиве с регрессионным паттерном:

{{ regex_filter(['pasta', 'fish', 'steak', 'potatoes'], "/p.*/") }}
+
Array
+(
+  0 => "pasta"
+  3 => "potatoes"
+)
+

regex_replace⚓︎

Полезная обертка для PHP-функции preg_replace(), с помощью этого фильтра вы можете выполнять сложные regex-замены текста:

{{ regex_replace('The quick brown fox jumps over the lazy dog.', ['/quick/','/brown/','/fox/','/dog/'], ['slow','black','bear','turtle']) }}
+
The slow black bear jumps over the lazy turtle.
+

regex_match⚓︎

Полезная обертка для PHP-метода preg_match(), с помощью этого фильтра можно выполнить сложное сопоставление регулярных выражений с текстом:

{{ regex_match('http://www.php.net/index.html', '@^(?:http://)?([^/]+)@i') }}
+
Array
+(
+  [0] => http://www.php.net
+  [1] => www.php.net
+)
+

regex_split⚓︎

Полезная обертка для PHP-метода preg_split(). Разбиение строки регулярным выражением на текст с помощью этого фильтра:

{{ regex_split('hypertext language, programming', '/\\s*,\\s*/u') }}
+
Array
+(
+  [0] => hypertext language
+  [1] => programming
+)
+

repeat⚓︎

Будет повторять всё, что передано, определенное количество раз.

{{ repeat('blah ', 10) }}
+

string⚓︎

Возвращает строку из значения. Если значение является массивом, верните его в кодировке json

{{ string(23) }}
+{{ string(['test' => 'x']) }}
+

svg_image⚓︎

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

{{ svg_image(path, classes, strip_style) }}
+

strip_style - удалить встроенный стиль SVG - полезно для стилизации с помощью CSS-классов.

пример:

{{ svg_image('theme://images/something.svg', 'my-class-here mb-10', true) }}
+

theme_var⚓︎

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

{{ theme_var('grid-size') }}
+

Сначала попробуйте page.header.grid_size, если это не установлено, попробуйте theme.grid_size из файла конфигурации темы:

{{ theme_var('grid_size', 1024) }}
+

t⚓︎

Переведите строку, как фильтр |t.

{{ t('SITE_NAME') }}
+

ta⚓︎

Функция, связанная с фильтром |ta.

tl⚓︎

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

{{ tl('SIMPLE_TEXT', ['fr']) }}
+

url⚓︎

Создает URL и преобразует любые потоки PHP URL в полноценные HTML ресурсы. Значение по умолчанию может быть передано в случае, если URL не может быть разрешен.

{{ url('theme://images/logo.png')|default('http://www.placehold.it/150x100/f4f4f4') }}
+

vardump⚓︎

Функция vardump() выводит на экран текущую переменную (а не в отладчике, как в dump())

{% set my_array = {foo: 'bar', baz: 'qux'} %}
+{{ vardump(my_array) }}
+
Array
+(
+  "foo" => "bar"
+  "baz" => "qux"
+)
+

xss⚓︎

Проверяет строку на наличие уязвимостей XSS:

{{ xss('this string contains a <script>alert("hello");</script> XSS vulnerability') }}
+
\ No newline at end of file diff --git a/themes/twig-tags-filters-functions/index.html b/themes/twig-tags-filters-functions/index.html new file mode 100644 index 00000000..5b2a039c --- /dev/null +++ b/themes/twig-tags-filters-functions/index.html @@ -0,0 +1,3 @@ + Обзор - Документация Grav CMS на русском

Теги, фильтры и функции Twig⚓︎

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

Для получения информации о разработке собственных фильтров Twig, ознакомьтесь с примером Свои фильтр/функция Twig в разделе Рецепты Twig в главе Сборник рецептов.

Теги⚓︎

Тег обеспечивает высокоуровневую функциональность Twig. Примеры встроенных тегов включают такие конструкции, как include, block, for, if и многие другие. Теги идентифицируются в Twig с помощью синтаксиса {% tagname %}. Кроме того, большинство тегов закрываются с помощью {% endtagname %}.

Grav включает несколько полезных настраиваемых тегов, которые обеспечивают такие функции, как cache, markdown, script, style, switch и др.

Теги Twig Grav ➡

Фильтры⚓︎

Фильтры Twig позволяют вам применять функции к переменной, которая отображается слева от символа вертикальной черты (|). Они особенно полезны при работе с текстом или переменными. Первым аргументом фильтра всегда является элемент слева, но последующие аргументы могут быть переданы в круглых скобках. Фильтры обладают некоторыми особыми возможностями, включая возможность учитывать контекст и среду.

Примеры встроенных фильтров Twig включают date, escape, join, lower, slice и многие другие. Примером может быть:

{% set foo = "one,two,three,four,five"|split(',', 3) %}
+

Grav включает несколько полезных настраиваемых фильтров, которые обеспечивают такие функции, как hyphenize, nicetime, starts_with, contains, base64_decode и многие другие.

Фильтры Twig Grav ➡

Функции⚓︎

Функции Twig — ещё один способ реализовать функциональность в Twig. Они похожи на фильтры, однако вместо того, чтобы воздействовать на переменную через |, вы должны вызывать эти функции напрямую и передавать любые поддерживаемые ими атрибуты в скобках после имени функции. Часто Grav предоставляет и фильтр, и функцию для одной и той же логики и оставляет на усмотрение пользователя выбор метода, который он предпочитает.

Примеры встроенных фильтров Twig включают block, dump, parent, random, range и др. Примером может быть:

{{ random(['apple', 'orange', 'citrus']) }}
+

Grav включает несколько полезных пользовательских функций, которые обеспечивают такие функции, как authorize, debug, evaluate, regex_filter, media и многие другие.

Функции Twig Grav ➡

\ No newline at end of file diff --git a/themes/twig-tags-filters-functions/tags/index.html b/themes/twig-tags-filters-functions/tags/index.html new file mode 100644 index 00000000..4389daa5 --- /dev/null +++ b/themes/twig-tags-filters-functions/tags/index.html @@ -0,0 +1,45 @@ + Теги Twig - Документация Grav CMS на русском

Теги Twig⚓︎

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

markdown⚓︎

Тэг markdown предоставляет новый мощный способ для встраивания Markdown в шаблон Twig. Можно использовать переменную и выводить её с помощью фильтра |markdown, но синтаксис {% markdown %} делает создание блоков текста ещё более простым.

{% markdown %}
+This is **bold** and this _underlined_
+
+1. This is a bullet list
+2. This is another item in that same list
+{% endmarkdown %}
+

script⚓︎

Тег script - это действительно удобный тег, который делает ваш Twig более читабельным по сравнению с обычным подходом {% do assets...%}. Это чисто альтернативный способ написания вещей.

Файл JS⚓︎

{% script 'theme://js/something.js' in 'bottom' priority: 20 with { defer: true, async: true } %}
+

В Grav 1.7.28 также добавлена поддержка модулей:

{% script module 'theme://js/module.mjs' %}
+

Внутренний JS⚓︎

{% script in 'bottom' priority: 20 %}
+    alert('Warning!');
+{% endscript %}
+

style⚓︎

Файл CSS⚓︎

{% style 'theme://css/foo.css' priority: 20 %}
+

Внутренний CSS⚓︎

{% style priority: 20 with { media: 'screen' } %}
+    a { color: red; }
+{% endstyle %}
+
{% link icon 'theme://images/favicon.png' priority: 20 with { type: 'image/png' } %}
+{% link modulepreload 'plugin://grav-plugin/build/js/vendor.js' %}
+

switch⚓︎

В большинстве языков программирования использование switch утверждений является обычным способом сделать кучу if else утверждений более чистыми и читабельными. Также они могут оказаться немного быстрее. Мы просто предоставляем простой способ их создания, так как они отсутствовали в базовой функциональности Twig.

{% switch type %}
+  {% case 'foo' %}
+     {{ my_data.foo }}
+  {% case 'bar' %}
+     {{ my_data.bar }}
+  {% default %}
+     {{ my_data.default }}
+{% endswitch %}
+

deferred⚓︎

Большой новой особенностью Grav 1.6 является мощность отложенных блоков. С традиционными блоками, после того, как блок отрисован, им нельзя манипулировать. Возьмем пример {% block scripts %}, который может содержать некоторые записи для JavaScript включает в себя. Если у вас есть дочерний шаблон Twig, и вы расширяете базовый шаблон, где определяется этот блок, вы можете расширить блок, и добавить свои собственные записи JavaScript. Тем не менее, шаблоны частичных веток, которые включены в эту страницу, не могут достигать блока или взаимодействовать с ним.

Атрибут отложенного на блоке, который питается от расширения Deferred, означает, что вы можете определить этот блок в любом шаблоне Twig, но его отрисовка отложена, так что он отрисовывает после всего остального. Это означает, что вы можете добавить ссылки на JavaScript с помощью вызова {% do assets.addJs() %} из любой точки вашей страницы, и поскольку рендеринг отложен, вывод будет содержать все активы, о которых Grav знает, независимо от того, когда вы их добавили.

{% block myblock deferred %}
+    This will be rendered after everything else.
+{% endblock %}
+

Также можно объединить содержимое родительского блока с отложенным блоком с помощью {{ parent() }}. Это может быть особенно полезно для тем, если добавлены дополнительные файлы CSS или JavaScript.

{% block stylesheets %}
+    <!-- Additional css library -->
+    {% do assets.addCss('theme://libraries/leaflet/dist/leaflet.css') %}
+    {{ parent() }}
+{% endblock %}
+

throw⚓︎

Есть определённые ситуации, когда нужно вручную бросить исключение, поэтому у нас тоже есть тэг для этого.

{% throw 404 'Not Found' %}
+

try & catch⚓︎

Также полезно иметь более мощную обработку ошибок в PHP-стиле в ваших Twig-шаблонах, так что у нас есть новый тег try/catch.

{% try %}
+   <li>{{ user.get('name') }}</li>
+{% catch %}
+   User Error: {{ e.message }}
+{% endcatch %}
+

render⚓︎

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

{% render collection layout: 'list' %}
+{% render object layout: 'default' with { variable: 'value' } %}
+

cache⚓︎

Иногда вам может понадобиться кэшировать части страницы, которые требуют много времени для рендеринга. Это можно сделать с помощью тега cache.

{% cache 600 %}
+  {{ some_complex_work() }}
+{% endcache %}
+

В примере 600 - это необязательное время жизни в секундах. Если параметр не передан, будет использоваться время жизни кэша по умолчанию.

\ No newline at end of file diff --git a/troubleshooting/common-problems/index.html b/troubleshooting/common-problems/index.html new file mode 100644 index 00000000..a145784b --- /dev/null +++ b/troubleshooting/common-problems/index.html @@ -0,0 +1,2 @@ + Общие проблемы - Документация Grav CMS на русском

Общие проблемы⚓︎

Здесь вы можете найти информацию о проблемах и вопросах, возникающих на форуме Grav и на сервере Discord Chat, которые возникают достаточно часто, чтобы мы подумали, что сэкономим время и составим список проблем и соответствующих решений в одном легко доступном месте.

Не удается подключиться к GPM⚓︎

Проблема

Не удается достичь GPM, и вы получаете эту ошибку в панели администратора.

Во-первых, убедитесь, что в PHP установлены cURL и OpenSSL. Вы можете проверить это в панели администратора, в Конфигурация -> Информация. Вы должны увидеть раздел «OpenSSL» с OpenSSL support: enabled. То же самое для cURL, раздел с cURL support: enabled.

Если это нормально, убедитесь, что вы не находитесь за прокси. Если да, настройте его в конфигурации системы Grav и убедитесь, что с подключением нет проблем.

Затем проверьте свои разрешения.

Если после всего вышесказанного у вас всё ещё возникают проблемы с подключением к GPM, мы заметили, что на некоторых серверах (в основном на локальных машинах под управлением Windows) возникают проблемы с проверкой SSL-сертификата getgrav.org, даже если это рейтинг. Чтобы обойти эту проблему, мы добавили новую конфигурацию системы system.gpm.verify_peer, которая включена по умолчанию. Установите значение false и повторите попытку.

Если на данный момент он всё ещё не работает, свяжитесь с нами или сообщите, если вам указали сюда через чат/форум.

Кроме того, проверьте, работает ли команда CLI, открыв SSH-соединение с сервером и запустив bin/gpm index, и проверьте, находится ли эта ошибка только внутри Admin или в командной строке тоже.

Интерфейс администратора не прокручивается⚓︎

Проблема

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

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

  • Жесткая перезагрузка страницы, очистив кэш Вашего браузера, а затем обновив его.
  • Убедитесь, что вы используете самую новую версию Grav, и переключитесь на язык по умолчанию - английский. Если это решает проблему прокрутки, пожалуйста, сообщите о неисправном языке как о проблеме.
  • Если вы используете CloudFlare для HTTPS или в качестве CDN, их JS-оптимизация, которая включена по умолчанию, может блокировать рендеринг скриптов. Чтобы отключить эту функцию, войдите в CloudFlare и выберите соответствующий домен, а затем выполните одно из следующих действий:
    1. Чтобы полностью отключить эту оптимизацию, перейдите к «Speed» и прокрутите вниз до «Rocket loader».
      • Установите для этого параметра значение «Выкл.», И CloudFlare не будет блокировать скрипт, но вы также не получите выгоды от их оптимизации.
    2. Чтобы отключить оптимизацию только для интерфейса администратора Grav, перейдите к «Правилам страницы» и нажмите кнопку «Создать правило страницы».
      • В поле «Если URL совпадает» введите имя своего домена, а затем введите /admin, например: example.com/admin.
      • Нажмите «Добавить настройку» и в раскрывающемся списке найдите Rocket Loader. При выборе измените значение в Select Value на off.
      • Оставьте поле «Порядок» как есть, по умолчанию оно установлено на First.
      • Наконец, нажмите кнопку «Сохранить и развернуть».

Если ничего из вышеперечисленного не работает, проверьте консоль своего браузера на наличие сообщений об ошибках JavaScript; В Chrome или Firefox нажмите F12 или Ctrl + Shift + I, затем щелкните вкладку «Консоль». Сообщите об ошибках.

Не удалось получить⚓︎

Внутри администратора иногда может появиться красное всплывающее окно «Fetch Failed». Если это случается время от времени, не волнуйтесь, это может просто означать проблему с подключением.

Но если он появляется каждый раз, проблема, с которой сталкиваются некоторые пользователи, - это mod_security, блокирующая сетевые запросы Grav.

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

Если вы используете свой собственный сервер, руководство о том, как это сделать, можно найти в http://www.inmotionhosting.com/support/website/modsecurity/find-and-disable-specific-modsecurity-rulesestive, в противном случае просто свяжитесь со своим хостинг-провайдером и проиллюстрируйте проблему.

Связанная проблема: admin#951

Zend OPcache API ограничен⚓︎

Если вы используете PHP с Zend OPache и получаете эту ошибку, то ваша текущая конфигурация OPCache [ограничивает доступ к функции OPcache API скриптами только из указанной строки] (https://php.net/manual/ru/opcache. configuration.php). Самое простое решение - найти расположение этой директивы либо в вашем файле php.ini, либо в специализированном файле opcache.ini, который втягивается в ваш общий файл php.ini, и установить пустое значение:

opcache.restrict_api=
+

Это проблема любого управляемого хостинга ServerPilot с включенным PHP 7.2. Для решения этой проблемы был отправлен запрос.

Расшаривание LinkedIn и индексация Wayback Machine не работают⚓︎

Проблема

Совместное использование страниц в LinkedIn и распространение данных страницы не работает. Wayback Machine неправильно индексирует страницы моего сайта.

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

Эта проблема появилась у пользователей в определённых серверных средах. В частности, с облачными серверами AWS у пользователей возникали проблемы с совместным использованием веб-страниц со своих сайтов Grav в LinkedIn или с их правильной индексацией с помощью Wayback Machine. Эта проблема была решена путем включения сжатия WebServer Gzip или Gzip.

Невозможно прокрутить страницу администратора в CloudFlare⚓︎

Для пользователей CloudFlare возможность прокрутки в админке может быть прервана. Для этого есть следующие решения:

В интерфейсе CloudFlare перейдите в Скорость и отключите Rocket Loader (или с помощью правила страницы).

Его также можно отключить в автоматическом (по умолчанию) режиме с помощью атрибута данных в скриптах:<script data-cfasync="false" src="/javascript.js"></script>.

Примером правила страницы может быть соответствие URL example.com/staging/*/admin, где * — это подстановочный знак, обозначающий любое имя папки. Для настроек добавьте Rocket Loader и выберите Off.

\ No newline at end of file diff --git a/troubleshooting/forbidden/forbidden-403.png b/troubleshooting/forbidden/forbidden-403.png new file mode 100644 index 00000000..51ebfd20 Binary files /dev/null and b/troubleshooting/forbidden/forbidden-403.png differ diff --git a/troubleshooting/forbidden/index.html b/troubleshooting/forbidden/index.html new file mode 100644 index 00000000..d802143c --- /dev/null +++ b/troubleshooting/forbidden/index.html @@ -0,0 +1,3 @@ + Доступ запрещён — 403 - Документация Grav CMS на русском

Доступ запрещён — 403⚓︎

Существует неясная, но постоянная проблема с Apache на Windows , вызывающая ошибку «403 forbidden».

В принципе, Apache не допускает : в URL-адресе, который работает на других системах, из-за проблемы безопасности, основанной на том факте, что пути windows могут иметь двоеточия в них: C:\some\path.

Мы решили эту проблему, предоставив настраиваемый параметр для разделителя параметров, который по умолчанию равен :

Просто отредактируйте свой user/config/system.yaml и добавьте это вверху:

param_sep: ';'
+

Это настроит Grav на использование точки с запятой, а не двоеточия. Например, вместо http://yoursite.com/blog/tag:something теперь будет http://yoursite.com/blog/tag;something.

Ошибка 403 в админке⚓︎

Если у вас установлен mod_security, у нас были сообщения о правиле 350147, вызывающем ложное срабатывание. Добавьте это правило в белый список или попросите поддержку у своего хостинг-провайдера.

ModSecurity: [file "/etc/httpd/conf/modsecurity.d/rules/tortix/modsec/50_plesk_basic_asl_rules.conf"] [line "308"] [id "350147"] [rev "143"] [msg "Protected by Atomicorp.com Basic Non-Realtime WAF Rules: Potentially Untrusted Web Content Detected"] [data ""] [severity "CRITICAL"] Access denied with code 403 (phase 2). Match of "rx ((?:submit(?:\\+| )?(request)?(?:\\+| )?>+|<<(?:\\+| )remove|(?:sign ?in|log ?(?:in|out)|next|modifier|envoyer|add|continue|weiter|account|results|select)?(?:\\+| )?>+)$|^< ?\\??(?: |\\+)?xml|^<samlp|^>> ?$)" against "ARGS:notifications" required. [hostname "mydomain"] [uri "/grav/admin/notifications.json/task:processNotifications"] [unique_id "WXoYHcpkEKz0qCI66845gQAAAAo"], referer: http://mydomain/grav/admin/tools
+
\ No newline at end of file diff --git a/troubleshooting/htaccess/index.html b/troubleshooting/htaccess/index.html new file mode 100644 index 00000000..a8baa313 --- /dev/null +++ b/troubleshooting/htaccess/index.html @@ -0,0 +1,7 @@ + .htaccess - Документация Grav CMS на русском

.htaccess⚓︎

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

Apache — одно из самых популярных серверных решений, доступных сегодня. Это бесплатно и широко доступно практически везде. К сожалению, Apache несовершенен, и иногда файл .htaccess может вызвать у вас головную боль. Не волнуйтесь, это почти всегда поправимо.

Как редактировать .htaccess в Windows и macOS⚓︎

Файл .htaccess является скрытым, что означает, что по умолчанию пользователи macOS и Windows не смогут увидеть этот файл в диспетчере файлов (Finder), если они не включат просмотр скрытых файлов.

  1. Откройте Terminal.
  2. Введите команду defaults write com.apple.finder AppleShowAllFiles YES и нажмите return.
  3. Введите команду killall Finder и нажмите return.

Теперь вы должны увидеть файл .htaccess в корневом каталоге распакованной папки Grav. Вы можете вернуть свои настройки в исходное скрытое состояние, повторив процесс и введя NO в конце шага 2 вместо YES.

  1. Откройте Проводник.
  2. Выберите вкладку Вид.
  3. Установите флажок Скрытые элементы.

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

Тестирование .htaccess⚓︎

Допустим, вы заходите в свой браузер, переходите на свой новый сайт Grav и ... его там нет! Большое жирное сообщение с надписью Not Found - это место, где должен быть ваш красивый сайт Grav. Это не забавная проблема, но решение может быть таким же простым, как настройка вашего файла .htaccess.

Первым шагом в устранении проблем с файлом .htaccess должно быть обеспечение того, чтобы файл действительно был получен и использован сервером. Убедитесь, что файл находится в корневом каталоге вашего сайта Grav, где он должен быть, и что он правильно назван .htaccess с начальной точкой (.).

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

Для проверки откройте файл .htaccess в текстовом редакторе. Затем вам нужно создать новую первую строку и поместить текст Test и сохранить.

HTACCESS Test

Эта ошибка сама по себе не решает вашу проблему, но позволяет узнать, что файл .htaccess в корневом каталоге вашего сайта Grav - это тот файл, который анализирует ваш сервер.

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

Устранение неполадок с поврежденным .htaccess⚓︎

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

Вот что вы можете сделать:

Найдите и откройте файл httpd.conf или apache.conf в текстовом редакторе. В Windows это, вероятно, будет Блокнот или текстовый редактор, предназначенный для разработки. Текстовые редакторы могут добавлять ненужную информацию, что может усугубить проблему.

Затем вы захотите найти в файле область Directory. Должен быть такой блок текста:

#
+# AllowOverride controls what directives may be placed in .htaccess files.
+# It can be "All", "None", or any combination of the keywords:
+#   Options FileInfo AuthConfig Limit
+#
+AllowOverride All
+

Если для AllowOverride установлено значение None или любое другое значение, кроме All, вам нужно будет изменить его на All и сохранить. Это изменение потребует перезагрузки вашего сервера Apache для регистрации.

Как только вы это сделаете, дайте своему сайту ещё один тест.

Мы также включили руководства по устранению неполадок, которые помогут вам, если вы столкнетесь с внутренней ошибкой сервера 404 или 500 во время работы с Grav.

\ No newline at end of file diff --git a/troubleshooting/htaccess/test.png b/troubleshooting/htaccess/test.png new file mode 100644 index 00000000..5c578389 Binary files /dev/null and b/troubleshooting/htaccess/test.png differ diff --git a/troubleshooting/internal-server-error/index.html b/troubleshooting/internal-server-error/index.html new file mode 100644 index 00000000..ee776cfa --- /dev/null +++ b/troubleshooting/internal-server-error/index.html @@ -0,0 +1,11 @@ + Внутренняя ошибка сервера — 500 - Документация Grav CMS на русском

Внутренняя ошибка сервера — 500⚓︎

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

Пожалуйста, свяжитесь с администратором сервера в webmaster@localhost, чтобы сообщить ему о времени возникновения этой ошибки и действиях, которые вы выполнили непосредственно перед этой ошибкой.

Дополнительные сведения об этой ошибке можно найти в журнале ошибок сервера. Apache/2.4.7 Server на localhost Port 80

Эта ошибка может быть вызвана следующими причинами:

  • неправильная конфигурация сервера (httpd.conf)
  • проблемы с htaccess
  • mod_security или похожие

Проверьте работоспособность PHP⚓︎

Первое, что вы должны сделать, это убедиться, что PHP работает правильно на вашем сервере, и Grav не является прямой причиной проблемы. Чтобы проверить это, просто создайте временный файл (удалите его впоследствии для безопасности!) в корневом каталоге вашего сайта, под названием info.php. Этот файл должен содержать следующий PHP код:

<?php phpinfo();
+

Затем наведите браузер на этот файл: http://yoursite.com/your_grav_directory/info.php. Вы должны получить страницу отчёта, содержащую всю информацию, связанную с конфигурацией PHP, включая загруженную версию и расширения.

Проверьте разрешения⚓︎

Ошибка 500 может быть вызвана неправильными разрешениями. Проверьте руководство по разрешениям

Создать issue⚓︎

Некоторые люди, которые недавно обновились до PHP 5.5 с версии 5.4 или 5.3, всё ещё могут иметь некоторые устаревшие настройки в своем файле php.ini. Одним из элементов, который может вызвать внутреннюю ошибку сервера 500, является параметр register_globals. Просто удалите или закомментируйте строку:

register_global = On
+

Затем перезапустите сервер Apache.

ThreadStackSize в Windows⚓︎

Если ваш сервер работает под управлением Windows, вы можете получить внутреннюю ошибку сервера 500 из-за того, что размер ThreadStackSize слишком мал. Просто добавьте этот код в конец вашего файла httpd.conf:

<IfModule mpm_winnt_module>
+  ThreadStackSize 8388608
+</IfModule>
+

Затем перезапустите сервер Apache.

Options -Indexes⚓︎

Grav использует параметр -Indexes, чтобы не отображать каталоги папок. Некоторым хостам не нравится, что Apache .htaccess манипулирует настройкой Options.

Мы видели отчёты о том, что просто закомментировав эту строку в файле Grav .htaccess, можно решить проблемы с ошибкой внутреннего сервера для пользователей в этой ситуации:

# Prevent file browsing
+#Options -Indexes
+

Проблемы с RewriteBase⚓︎

Получили несколько отчётов о внутренних ошибках сервера 500 без настройки RewriteBase? Попробуйте изменить

# RewriteBase /
+

на

RewriteBase /
+

При навигации по административной панели Grav в левом верхнем углу появляется сообщение Внутренняя ошибка сервера. Это связано с неправильными разрешениями для вашей папки /cache.

Внутренняя ошибка сервера

Если эта ошибка появляется, скорее всего, вы не установили правильное разрешение для папки /cache, вместо того, чтобы просто сделать папку доступной для записи, вам нужно сделать её рекурсивной для записи. Выполнение приведенной ниже команды из каталога Grav должно решить проблему.

sudo chmod 755 cache/ -R
+
\ No newline at end of file diff --git a/troubleshooting/invalid-security-token/index.html b/troubleshooting/invalid-security-token/index.html new file mode 100644 index 00000000..58a1182d --- /dev/null +++ b/troubleshooting/invalid-security-token/index.html @@ -0,0 +1 @@ + Неверный токен безопасности - Документация Grav CMS на русском

Неверный токен безопасности⚓︎

Проблема

Вы получаете эту ошибку в панели администратора при входе в систему при выполнении операций.

Существует несколько возможных причин проблемы, связанных с сеансом:

  • Попробуйте перезагрузить браузер, чтобы получить новый токен.
  • Попробуйте очистить файлы куки браузера, затем выйти и снова войти.
  • Убедитесь, что вы работаете с SSL и HTTPS URL, если у вас установлен параметр session.secure: true в файле system.yaml Grav (можно отключить этот параметр на локалке).
  • Убедитесь, что в PHP задан правильный путь к директории tmp. Это может быть установлено непосредственно в PHP или путем установки параметра Grav system.yaml session.path (его также можно установить через админку в конфигурации системы) Сообщение о проблеме
  • Убедитесь, что конфигурация вашего веб-сервера верна и включает строку запроса Сообщение о проблеме
\ No newline at end of file diff --git a/troubleshooting/page-not-found/404-not-found.png b/troubleshooting/page-not-found/404-not-found.png new file mode 100644 index 00000000..c56db552 Binary files /dev/null and b/troubleshooting/page-not-found/404-not-found.png differ diff --git a/troubleshooting/page-not-found/error-404.png b/troubleshooting/page-not-found/error-404.png new file mode 100644 index 00000000..aae5d61b Binary files /dev/null and b/troubleshooting/page-not-found/error-404.png differ diff --git a/troubleshooting/page-not-found/htaccess_tester.png b/troubleshooting/page-not-found/htaccess_tester.png new file mode 100644 index 00000000..5bbc88b3 Binary files /dev/null and b/troubleshooting/page-not-found/htaccess_tester.png differ diff --git a/troubleshooting/page-not-found/index.html b/troubleshooting/page-not-found/index.html new file mode 100644 index 00000000..22434cf2 --- /dev/null +++ b/troubleshooting/page-not-found/index.html @@ -0,0 +1,17 @@ + Страница не найдена — 404 - Документация Grav CMS на русском

Страница не найдена — 404⚓︎

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

404 Not Found

Приведенные ниже примеры относятся к веб-серверу Apache, который является наиболее распространенным серверным программным обеспечением..

IIS использование файла .htaccess⚓︎

После добавления URL Rewrite на сервер IIS с помощью установщика веб-платформы перезапустите сервер IIS. Перейдите в интерфейс управления IIS, дважды щелкните «Переопределение URL-адреса», в разделе «Правила для входящих подключений» щелкните «Правила импорта», в разделе «Правила для импорта» перейдите к файлу конфигурации, выбрав файл .htaccess в корне, а затем нажмите «Импорт». Перезагрузите сервер IIS. Получите доступ к Grav прямо сейчас.

Отсутствующий файл .htaccess⚓︎

Первое, что нужно проверить, это наличие предоставленного файла .htaccess в корне вашей установки Grav. Поскольку это скрытый файл, вы обычно не увидите его в окнах проводника или искателя. Если вы извлекли Grav, а затем выбрали и переместили или скопировали файлы, возможно, вы оставили этот очень важный файл позади.

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

AllowOverride All⚓︎

Для того чтобы предоставленный Grav файл .htaccess мог установить правила перезаписи, необходимые для правильной работы маршрутизации, Apache должен сначала прочитать файл. Когда ваша директива <Directory> или <VirtualHost> настроена с помощью AllowOverride None, файл .htaccess полностью игнорируется. Самое простое решение - изменить это на AllowOverride All. где используется RewriteRule, FollowSymLinks или SymLinksIfOwnerMatch необходимо указать в директиве Options. Просто добавьте в той же строке +FollowSymlinks после Options.

Более подробную информацию о AllowOverride и всех возможных параметрах конфигурации можно найти в документации Apache.

Проблема RewriteBase⚓︎

Если домашняя страница вашего сайта Grav загружается, но любая другая страница отображает эту очень грубую ошибку Apache-style, то наиболее вероятной причиной является проблема с вашим файлом .htaccess.

По умолчанию файл .htaccess, поставляемый вместе с Grav, в большинстве случаев отлично работает сразу после установки. Однако существуют определённые настройки с участием виртуальных хостов, в которых файловая система напрямую не соответствует настройке виртуального хостинга. В этих случаях вы должны настроить параметр RewriteBase в .htaccess, чтобы он указывал на правильный путь.

В самом файле .htaccess есть краткое объяснение:

##
+# If you are getting 404 errors on subpages, you may have to uncomment the RewriteBase entry
+# You should change the '/' to your appropriate subfolder. For example if you have
+# your Grav install at the root of your site '/' should work, else it might be something
+# along the lines of: RewriteBase /<your_sub_folder>
+##
+
+# RewriteBase /
+

Просто удалите символ # перед директивой RewriteBase/, чтобы раскомментировать ее, и настройте путь в соответствии со средой вашего сервера.

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

Отсутствующие модули Rewrite⚓︎

Некоторые пакеты веб-серверов (я смотрю на ваши EasyPHP и WAMP!) Не поставляются с модулем Apache rewrite, включенным по умолчанию. Обычно их можно включить из настроек конфигурации для Apache, или вы можете сделать это вручную через httpd.conf, раскомментировав эту строку (или что-то подобное), чтобы они были загружены Apache:

#LoadModule rewrite_module modules/mod_rewrite.so
+

Затем перезапустите сервер Apache.

Тестовый скрипт .htaccess⚓︎

Чтобы помочь изолировать проблемы с .htaccess и rewrite, вы можете загрузить файл htaccess_tester.php и поместить его в корневой каталог Grav.

Затем перейдите в браузере по адресу http://yoursite.com/htaccess_tester.php. Вы должны получить сообщение об успешном выполнении и увидеть содержимое файла .htaccess.

Затем вы можете проверить, работают ли перезаписи, создав резервную копию существующего файла .htaccess:

mv .htaccess .htaccess-backup
+

А затем попробуйте этот простой файл .htaccess:

<IfModule mod_rewrite.c>
+    RewriteEngine On
+    RewriteRule ^.*$ htaccess_tester.php
+</IfModule>
+

Затем попробуйте этот URL: http://yoursite.com/test. Фактически, любой путь, который вы используете, должен отображать сообщение об успешном выполнении, сообщающее вам, что mod_rewrite работает.

После того, как вы закончили тестирование, вы должны удалить тестовый файл и восстановить файл .htaccess:

rm htaccess_tester.php
+mv .htaccess-backup .htaccess
+

Встроенная страница ошибки 404⚓︎

404 Not Found

Если вы получаете сообщение об ошибке Grav-style с сообщением Ошибка 404, значит, ваш .htaccess работает правильно, но вы пытаетесь перейти на страницу, которую Grav не может найти.

Наиболее частая причина этого - просто перемещение или переименование страницы. Еще одна вещь, которую нужно проверить, это установить ли для страницы slug в заголовках YAML страницы. Это переопределяет явное имя папки, которое используется по умолчанию для создания URL-адреса.

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

404 Page Not Found на Nginx⚓︎

Если ваш сайт находится во вложенной папке, убедитесь, что ваш nginx.conf указывает на эту вложенную папку. Образец nginx.conf содержит комментарий в коде, объясняющий, как это сделать.

\ No newline at end of file diff --git a/troubleshooting/permissions/index.html b/troubleshooting/permissions/index.html new file mode 100644 index 00000000..63936d2d --- /dev/null +++ b/troubleshooting/permissions/index.html @@ -0,0 +1,15 @@ + Разрешения - Документация Grav CMS на русском

Разрешения⚓︎

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

Сначала выясните, с каким пользователем работает Apache или Nginx, выполнив следующую команду:

ps aux | grep -v root | grep apache | cut -d\  -f1 | sort | uniq
+
ps aux | grep -v root | grep nginx | cut -d\  -f1 | sort | uniq
+

И узнайте, какому пользователю принадлежит файл в вашем каталоге grav, запустив

ls -l
+

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

  1. PHP/веб-сервер работает с тем же пользователем, который редактирует файлы (рекомендуется) Этот подход используется в большинстве виртуальных хостингов, а также хорошо подходит для локальной разработки. В сообщении в блоге, которое мы написали относительно MacOS Yosemite, Apache и PHP, описывается, как настроить Apache для работы как ваша личная учетная запись пользователя. Этот подход не считается достаточно безопасным для использования на выделенном веб-хосте, поэтому следует использовать второй или третий вариант.

  2. PHP/веб-сервер работает с разными учетными записями, но с той же группой Используя общую группу между вашим пользователем и учетной записью PHP/веб-сервера с разрешениями 775 и 664, вы гарантируете, что даже если у вас есть две разные учетные записи, обе будут иметь доступ на чтение/запись к файлам. Вам также, вероятно, следует установить в корне параметр umask 0002, чтобы новые файлы создавались с соответствующими разрешениями.

  3. Разные учетные записи, исправлять разрешения вручную Последний подход состоит в том, чтобы иметь совершенно разные учетные записи и просто обновлять права собственности и разрешения файлов после редактирования, чтобы гарантировать, что пользователь PHP/веб-сервера может читать/писать соответствующим образом.

Для этого можно использовать простой сценарий оболочки с исправлением разрешений:

#!/bin/sh
+chown -R joeblow:staff .
+find . -type f -exec chmod 664 {} \;
+find ./bin -type f -exec chmod 775 {} \;
+find . -type d -exec chmod 775 {} \;
+find . -type d -exec chmod +s {} \;
+

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

  1. Изменяет текущий каталог, все файлы и подпапку на владение joeblow и staff
  2. Находит все файлы из текущего каталога ниже и устанавливает права доступа 664, так что они будут RW для пользователя и группы и R для других.
  3. Находит все папки из текущего каталога ниже и устанавливает права доступа 775, так что они являются RWX для пользователя и группы и RX для других.
  4. Устанавливает право собственности для всех каталогов, чтобы гарантировать сохранение изменений пользователей и групп.

Разрешения папки кэша изображений⚓︎

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

images:
+  cache_perms: '0775'
+

если свойство images уже присутствует, просто добавьте в его конец cache_perms: 0775.

Если это по-прежнему не работает, создайте файл setup.php в корневой папке Grav (тот, который содержит index.php), и добавьте туда

<?php
+umask(0002);
+

Если у вас уже есть файл setup.php, просто добавьте эту строку в начало. Этот файл обычно используется для настройки нескольких сайтов, но, будучи вызванным при каждом вызове Grav, вы также можете использовать его для других целей.

Совместный хостинг с сайтом WordPress⚓︎

В общем, Grav можно установить в папку корневого уровня существующего сайта WordPress, и две CMS будут прекрасно сосуществовать. (Не забудьте установить Base Rewrite в htaccess папки Grav.) Если вы сталкиваетесь с ошибками разрешений с файлами кэша при доступе к администратору и/или просмотру страниц Grav, проверьте, установлен ли WP-Engine для этого сайта WordPress. Если это так, вам нужно будет связаться с их службой поддержки, чтобы создать исключение для папки Grav из их агрессивной службы распределенного кэша.

Совет для SELinux⚓︎

Если приведенные выше предложения по-прежнему не работают, запустите в корневой директории Grav следующую команду:

chcon -Rv system_u:object_r:httpd_sys_rw_content_t:s0 ./
+

Ссылки:

\ No newline at end of file diff --git a/troubleshooting/proxy/index.html b/troubleshooting/proxy/index.html new file mode 100644 index 00000000..e4cbc4ff --- /dev/null +++ b/troubleshooting/proxy/index.html @@ -0,0 +1 @@ + Проблемы с прокси - Документация Grav CMS на русском

Проблемы с прокси⚓︎

Выполнение команд GPM через прокси может привести к ошибке.

cURL позволяет вам установить прокси в качестве переменной окружения (http_proxy и https_proxy) без изменений, необходимых в Grav.

См. https://stackoverflow.com/questions/7559103/how-to-setup-curl-to-permanently-use-a-proxy

Но сначала, если в вашей среде включен fopen, вам нужно отключить его, отключив allow_url_fopen через php.ini.

Это потому, что если доступен fopen, Grav автоматически использует его поверх curl.

\ No newline at end of file diff --git a/troubleshooting/server-error/grav-server-error.png b/troubleshooting/server-error/grav-server-error.png new file mode 100644 index 00000000..6f8157b2 Binary files /dev/null and b/troubleshooting/server-error/grav-server-error.png differ diff --git a/troubleshooting/server-error/index.html b/troubleshooting/server-error/index.html new file mode 100644 index 00000000..861a77a1 --- /dev/null +++ b/troubleshooting/server-error/index.html @@ -0,0 +1,2 @@ + Ошибка сервера - Документация Grav CMS на русском

Ошибка сервера⚓︎

Ошибки сервера почти всегда вызваны неправильной конфигурацией Grav. Случилось что-то неожиданное, и из-за этого CMS не может восстановиться и обслуживать страницу.

Когда вы видите это сообщение, это означает, что ваш сервер работает в режиме Production, чтобы скрыть потенциально конфиденциальную информацию от отображения вашим пользователям. Сама ошибка будет сохранена в файле logs/grav.log. Пожалуйста, изучите этот файл, чтобы определить точный характер ошибки.

Возможные причины включают в себя:

  • Ошибки сервера вызваны устаревшей конфигурацией
  • Неправильные права доступа к файлам, которые не позволяют Grav записывать данные
  • Изменения в файловой системе, о которых Grav ещё не знает
  • Ошибки при разборе конфигурации из-за неверно отформатированных конфигурационных файлов

Если у вас установлен плагин Grav Admin, вы можете просмотреть ошибки сервера оттуда. Щелкнув по отдельным ошибкам, вы можете увидеть страницы отладки, даже если отладчик был выключен.

Устаревшая конфигурация⚓︎

Первое, что вы должны сделать, это очистить кэш, чтобы убедиться, что конфигурация обновлена:

bin/grav clear-cache
+

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

Проблемы с установкой и настройкой⚓︎

  • системное требование
  • файловое разрешение
  • проблемы с установкой
  • проблемы конфигурации
\ No newline at end of file diff --git a/webservers-hosting/deploying-with-git/index.html b/webservers-hosting/deploying-with-git/index.html new file mode 100644 index 00000000..acffab20 --- /dev/null +++ b/webservers-hosting/deploying-with-git/index.html @@ -0,0 +1,13 @@ + Развёртывание с помощью Git - Документация Grav CMS на русском

Развёртывание с помощью Git⚓︎

Используя распределенную систему контроля версий Git в своих средах разработки и серверов, вы можете настроить простой рабочий процесс через размещенный сервис Git, например Github или GitLab. Попробуйте это, если вам удобно работать с Git'ом и его клиентскими инструментами.

Его преимущества включают: * это чище: вам нужно выдать всего несколько команд в командной строке, и они могут быть автоматизированы в любой степени * надежнее: вам не нужно запоминать, какие файлы загружать, и вы можете быть уверены, что эскалируете только те изменения, которые вам нужны (особенно полезно, когда вы хотите загрузить только некоторые изменения в файлах) * безопасность: при использовании облачного хостинга для вашего канонического репозитория ("origin") резервное копирование (версионных) исходных текстов происходит бесплатно; вы можете даже управлять своими задачами с помощью вопросов (issues).

Настройка⚓︎

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

  • В вашей среде разработки папка user является Git-репозиторием.
  • Хранилище папок user также размещено в облаке. Выбирайте провайдера, поддерживающего частные репозитории, если вы не хотите делиться своим кодом со всем миром.
  • Ваша размещенная копия является "удаленной" копией вашей локальной и серверной среды origin.
  • Вносите изменения в ваш сайт Grav из локальной среды в origin на вашем облачном хосте Git.
  • На вашем сервере установлен Grav, и его папка user является клоном вашего удаленного хранилища.
  • Когда вы будете готовы обновить сайт Grav на своем сервере, используйте Git для извлечения из origin вашего удаленного сайта.

Обновления⚓︎

После первоначальной настройки вам нужно будет выполнять только два действия после каждого значительного обновления: * запушить из локальной среды, * запулить изменения на свой сервер.

Расширение вашей установки⚓︎

Если вам нужна более продвинутая автоматизация, вы можете настроить хуки Git или использовать вебхуки Github. Вы также можете интегрировать изменения контента от веб-редакторов, вносящих правки в свои собственные установки через консоль администратора. Вы можете вести (почти) неизменяемые записи о том, что публикуется, используя метки Git.

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

Вы также можете использовать Git для рабочего процесса контента с помощью плагина Git Sync plugin, чтобы редакторы контента могли развертывать изменения через консоль администрирования.

Вот пример для вашего файла .gitignore в репозитории папки user. Это поможет сохранить чистоту вашего развёртывания:

accounts/*
+!accounts/.*
+data/*
+!data/.*
+languages/*
+!languages/.*
+plugins/*
+!plugins/.*
+themes/*
+!themes/.*
+!themes/MY_CUSTOM_THEME/
+**/config/security.yaml
+

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

\ No newline at end of file diff --git a/webservers-hosting/local-development-with-ddev/index.html b/webservers-hosting/local-development-with-ddev/index.html new file mode 100644 index 00000000..7961b0eb --- /dev/null +++ b/webservers-hosting/local-development-with-ddev/index.html @@ -0,0 +1 @@ + Локальная разработка с ddev - Документация Grav CMS на русском

Локальная разработка с ddev⚓︎

ddev это инструмент разработки PHP с открытым исходным кодом, построенный на основе Docker. Он может легко создавать локальные среды хостинга, а его конфигурации серверов могут управляться версиями. Изначально предназначенный для разработки Drupal, ddev легко может размещать сайты Drupal, Wordpress и GravCMS. Поскольку он основан на Docker, ddev совместим с Windows, Mac и Linux.

Установка ddev⚓︎

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

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

  • Поместите файлы Grav в папку на главной машине (/home/USER/projects/grav).
  • В вашем терминале компакт-диск в эту папку cd /home/USER/projects/grav
  • Введите ddev config. На экране появятся следующие подсказки:
    • Имя проекта (по умолчанию используется имя папки [GRAV_ROOT]
    • Путь к Docroot (по умолчанию используется [GRAV_ROOT])
    • Тип проекта (используйте тип php для этой опции)
  • запустите ddev start из папки [GRAV_ROOT].
  • Позвольте ddev построить необходимые ему контейнеры. Для внесения изменений в локальные хосты могут потребоваться учетные данные Root/Sudo.

Замечание о ddev и плагине Feed⚓︎

По умолчанию ddev использует nginx, а конфигурации по умолчанию от 18 сентября 2020 года достаточно для большинства случаев использования. Однако, если вы планируете использовать плагин Feed, вам необходимо внести следующие изменения в конфигурацию:

  • Измените [GRAV_ROOT]/.ddev/nginx_full/nginx-site.conf
  • Удалите строку 3, чтобы сделать изменения постоянными (#ddev-generated)
  • Удалите строки 58-62, который принудительно кэширует RSS и Atom (# Expire rules for static content ...)
  • Запустите ddev restart, чтобы загрузить новую конфигурацию nginx.

Невыполнение этих изменений приведет к ошибке HTTP 404 при попытках загрузить RSS или Atom-каналы.

Использование ddev⚓︎

Выполните эти команды из [GRAV_ROOT] на главной машине:

  • ddev describe - Просмотр всех доступных служб
  • ddev ssh - Подключает оболочку к веб-серверу в корне документа
  • ddev exec params - Выполняет параметры в корне документа (например, ddev exec bin/grav clear чтобы очистить кэш)

Мне нужно ввести [вставить плагин/ тему здесь]. Как получить доступ к bin/gpm?

Из [GRAV_ROOT] введите ddev ssh, и вы будете подключены к веб-серверу в docroot. Отсюда вы можете запустить любую команду php (composer, bin/gpm, bin/grav и т. д.).

Где я могу редактировать свои файлы?

Редактор на хост-компьютере может редактировать файлы по адресу [GRAV_ROOT]. Изменения будут автоматически отражаться в контейнере ddev. Изменения, выполненные в контейнере (например, bin/gpm install admin), будут отражены на хост-машине.
\ No newline at end of file diff --git a/webservers-hosting/php-built-in-web-server/index.html b/webservers-hosting/php-built-in-web-server/index.html new file mode 100644 index 00000000..cf6bbca8 --- /dev/null +++ b/webservers-hosting/php-built-in-web-server/index.html @@ -0,0 +1,18 @@ + Тестовый хостинг со встроенным веб-сервером PHP - Документация Grav CMS на русском

Тестовый хостинг со встроенным веб-сервером PHP⚓︎

Командная строка PHP (CLI SAPI) имеет встроенный веб-сервер, который полезен для быстрого тестирования или демонстрации сайта Grav. Это не полнофункциональный веб-сервер и потому он не должен использоваться в публичной сети.

Использование веб-сервера CLI⚓︎

  1. В командной строке перейдите в папку [GRAV_ROOT].
  2. Выполните команду php -S localhost:8080 system/router.php. Вы должны увидеть ответ, подобный приведенному ниже.
php -S localhost:8080 system/router.php
+PHP 7.3.27 Development Server started at Thu Jun 17 09:24:46 2021
+Listening on http://localhost:8080
+Document root is /Users/somerandom/Desktop/quick-grav-test
+Press Ctrl-C to quit.
+
  1. Перейдите к указанному URL-адресу, например: http://localhost:8080/.
  2. Чтобы остановить веб-сервер, нажмите Ctrl-C.

Ошибка "Адрес уже используется"⚓︎

Если вы получите сообщение "Адрес уже используется" при выполнении команды php -S, значит на вашей машине уже запущен веб-сервер на указанном номере порта (например, :8080). Вы можете решить эту проблему, изменив номер порта в вашей команде (например, :8181) и повторив попытку.

Отображение журнала в режиме реального времени⚓︎

Веб-сервер CLI отображает свой журнал в режиме реального времени, пока вы просматриваете сайт, что может быть полезно для быстрого тестирования.

PHP 7.3.27 Development Server started at Thu Jun 17 09:24:46 2021
+Listening on http://localhost:8080
+Document root is /Users/somerandom/Desktop/quick-grav-test
+Press Ctrl-C to quit.
+[Thu Jun 17 09:26:15 2021] 127.0.0.1:63965 [200]: /
+[Thu Jun 17 09:26:15 2021] 127.0.0.1:64007 [200]: /assets/fd2c5827e1f18bb54d20265f4fc56b59.css?g-74e4c5a3
+[Thu Jun 17 09:26:15 2021] 127.0.0.1:64008 [200]: /assets/d87a2d24fae663a8c55e144c963a1915.js?g-74e4c5a3
+[Thu Jun 17 09:26:15 2021] 127.0.0.1:64014 [200]: /assets/1d8c5ea92966046d4649472f1630a253.js?g-74e4c5a3
+[Thu Jun 17 09:26:16 2021] 127.0.0.1:64024 [200]: /user/images/navigation/logo_small.png
+[Thu Jun 17 09:26:16 2021] 127.0.0.1:64028 [200]: /user/images/navigation/bgdark.svg
+[Thu Jun 17 09:26:16 2021] 127.0.0.1:64030 [200]: /user/images/navigation/bglight_50.png
+[Thu Jun 17 09:26:16 2021] 127.0.0.1:64032 [200]: /user/images/navigation/brand.svg
+

Дополнительная информация⚓︎

Посетите веб-сайт PHP, чтобы узнать больше о встроенном веб-сервере.

\ No newline at end of file diff --git a/webservers-hosting/servers/grav-built-in/index.html b/webservers-hosting/servers/grav-built-in/index.html new file mode 100644 index 00000000..8b401fa0 --- /dev/null +++ b/webservers-hosting/servers/grav-built-in/index.html @@ -0,0 +1,27 @@ + Встроенный веб-сервер Grav - Документация Grav CMS на русском

Встроенный веб-сервер Grav⚓︎

Вы можете запустить Grav, используя простую команду из терминала/командной строки, используя встроенный сервер PHP, доступный для любой системы с установленным PHP.

Всё, что вам нужно сделать, это перейти к корню вашей установки Grav с помощью терминала или командной строки и ввести bin/grav server.

Хотя технически всё, что вам нужно, это установить PHP, если вы установите приложение Symfony CLI, сервер предоставит SSL-сертификат, чтобы вы могли использовать https:// и PHP-FPM для повышения производительности.

Ввод этой команды приведет к выводу, аналогичному следующему:

 bin/grav server
+
+Grav Web Server
+===============
+
+Tailing Web Server log file (/Users/joeblow/.symfony/log/96e710135f52930318e745e901e4010d0907cec3.log)
+Tailing PHP-FPM log file (/Users/joeblow/.symfony/log/96e710135f52930318e745e901e4010d0907cec3/53fb8ec204547646acb3461995e4da5a54cc7575.log)
+Tailing PHP-FPM log file (/Users/joeblow/.symfony/log/96e710135f52930318e745e901e4010d0907cec3/53fb8ec204547646acb3461995e4da5a54cc7575.log)
+
+[OK] Web server listening
+The Web server is using PHP FPM 8.0.8
+https://127.0.0.1:8000
+
+
+[Web Server ] Jul 30 14:54:53 |DEBUG  | PHP    Reloading PHP versions
+[Web Server ] Jul 30 14:54:54 |DEBUG  | PHP    Using PHP version 8.0.8 (from default version in $PATH)
+[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    fpm is running, pid 64992
+[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    ready to handle connections
+[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    fpm is running, pid 64992
+[PHP-FPM    ] Jul  6 14:40:17 |NOTICE | FPM    ready to handle connections
+[Web Server ] Jul 30 14:54:54 |INFO   | PHP    listening path="/usr/local/Cellar/php/8.0.8_2/sbin/php-fpm" php="8.0.8" port=65140
+[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    fpm is running, pid 73709
+[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    ready to handle connections
+[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    fpm is running, pid 73709
+[PHP-FPM    ] Jul 30 14:54:54 |NOTICE | FPM    ready to handle connections
+

Ваш терминал также будет предоставлять вам в режиме реального времени обновления любой активности на этом специальном сервере. Вы можете скопировать URL-адрес, указанный в строке [OK] Web server listening, и вставить его в используемый браузер, чтобы получить доступ к своему сайту, включая админку.

https://127.0.0.1:8000
+

Это полезный инструмент для быстрой разработки, который не следует использовать вместо выделенного веб-сервера, такого как Apache или Nginx.

\ No newline at end of file diff --git a/webservers-hosting/servers/nginx/index.html b/webservers-hosting/servers/nginx/index.html new file mode 100644 index 00000000..f4e768d5 --- /dev/null +++ b/webservers-hosting/servers/nginx/index.html @@ -0,0 +1,178 @@ + Nginx - Документация Grav CMS на русском

Nginx⚓︎

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

Требования⚓︎

На этой странице объясняется, как запустить Grav с Nginx в качестве HTTP-сервера и PHP-FPM (FastCGI Process Manager) для обработки скриптов PHP, поэтому эти пакеты необходимо установить на ваш сервер:

  • nginx
  • php-fpm

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

Если вы новичок в Nginx и ещё не имеете базовых знаний о директивах/контексте блока, рекомендуется прочитать следующие материалы по Nginx: Руководство для начинающих, особенно разделы Структура файла конфигурации и Раздача статического содержимого.

Предполагается, что ваша конфигурация Nginx находится в /etc/nginx/, а ваша установка Grav хранится в /var/www/grav/. Структура конфигурации представляет собой блок http, который содержит общие директивы, относящиеся ко всем страницам, обслуживаемым Nginx, а также один или несколько блоков server для каждой страницы, содержащие директивы для конкретного сайта. Главный файл конфигурации сервера — это nginx.conf и хранит блок http, в то время как специфичные для сайта конфигурации (блоки server) хранятся в sites-available и имеют символические ссылки на sites-enabled.

Права доступа к файлам⚓︎

Каталог /var/www и все содержащиеся в нем файлы и папки должны принадлежать $USER: www-data (или как там вы называете пользователя/группу Nginx). В разделе Устранение неполадок / Разрешения объясняется, как настроить права доступа к файлам и каталогам для Grav, в данном случае с использованием общей группы. По сути, вам нужно 775 для каталогов и 664 для файлов в каталоге Grav, поэтому Grav может изменять контент и обновлять себя. Вы должны добавить своего пользователя в группу www-data, чтобы вы могли получить доступ к файлам, созданным Grav/Nginx.

Пример nginx.conf⚓︎

Следующая конфигурация представляет собой улучшенную версию файла по умолчанию /etc/nginx/nginx.conf, в основном с улучшениями из github.com/h5bp/server-configs-nginx. См. их репозиторий для объяснения этих настроек или статьи основная функциональность Nginx и Модуль ngx_http_core_module для поиска конкретных директив.

Рекомендуется использовать обновленный файл определения типов MIME (mime.types) с сайта github.com/h5bp/server-configs-nginx. Это гарантирует, что типы правильно установлены для сжатия gzip.

nginx.conf:

user www-data;
+worker_processes auto;
+worker_rlimit_nofile 8192; # should be bigger than worker_connections
+pid /run/nginx.pid;
+
+events {
+    use epoll;
+    worker_connections 8000;
+    multi_accept on;
+}
+
+http {
+    sendfile on;
+    tcp_nopush on;
+    tcp_nodelay on;
+
+    keepalive_timeout 30; # longer values are better for each ssl client, but take up a worker connection longer
+    types_hash_max_size 2048;
+    server_tokens off;
+
+    # maximum file upload size
+    # update 'upload_max_filesize' & 'post_max_size' in /etc/php/fpm/php.ini accordingly
+    client_max_body_size 32m;
+    # client_body_timeout 60s; # increase for very long file uploads
+
+    # set default index file (can be overwritten for each site individually)
+    index index.html;
+
+    # load MIME types
+    include mime.types; # get this file from https://github.com/h5bp/server-configs-nginx
+    default_type application/octet-stream; # set default MIME type
+
+    # logging
+    access_log /var/log/nginx/access.log;
+    error_log /var/log/nginx/error.log;
+
+    # turn on gzip compression
+    gzip on;
+    gzip_disable "msie6";
+    gzip_vary on;
+    gzip_proxied any;
+    gzip_comp_level 5;
+    gzip_buffers 16 8k;
+    gzip_http_version 1.1;
+    gzip_min_length 256;
+    gzip_types
+        application/atom+xml
+        application/javascript
+        application/json
+        application/ld+json
+        application/manifest+json
+        application/rss+xml
+        application/vnd.geo+json
+        application/vnd.ms-fontobject
+        application/x-font-ttf
+        application/x-web-app-manifest+json
+        application/xhtml+xml
+        application/xml
+        font/opentype
+        image/bmp
+        image/svg+xml
+        image/x-icon
+        text/cache-manifest
+        text/css
+        text/javascript
+        text/plain
+        text/vcard
+        text/vnd.rim.location.xloc
+        text/vtt
+        text/x-component
+        text/x-cross-domain-policy;
+
+    # disable content type sniffing for more security
+    add_header "X-Content-Type-Options" "nosniff";
+
+    # force the latest IE version
+    add_header "X-UA-Compatible" "IE=Edge";
+
+    # enable anti-cross-site scripting filter built into IE 8+
+    add_header "X-XSS-Protection" "1; mode=block";
+
+    # include virtual host configs
+    include sites-enabled/*;
+}
+

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

Grav поставляется с файлом конфигурации для вашего сайта в каталоге webserver-configs вашей установки Grav. Вы можете скопировать этот файл в каталог конфигурации nginx:

cp /var/www/grav/webserver-configs/nginx.conf /etc/nginx/sites-available/grav-site
+

Откройте этот файл в редакторе и замените example.com на свой домен/IP (или localhost, если вы хотите просто запустить его локально), замените строку root на root/var/www/grav/;, а затем создайте символическую ссылку на конфигурацию вашего сайта в sites-enabled:

ln -s /etc/nginx/sites-available/grav-site /etc/nginx/sites-enabled/grav-site
+

Наконец, позвольте Nginx перезагрузить свою конфигурацию:

nginx -s reload
+

Исправление уязвимостей httpoxy⚓︎

httpoxy это набор уязвимостей, влияющих на код приложения, работающего в CGI или CGI-подобных средах. (Источник: httpoxy.org)

Чтобы защитить свой сайт от этой уязвимости, вы должны заблокировать заголовок Proxy. Это можно сделать, добавив параметр FastCGI в ваш config. Просто откройте файл /etc/nginx/fastcgi.conf и добавьте эту строку в конец:

fastcgi_param  HTTP_PROXY         "";
+

Использование SSL (с существующим сертификатом)⚓︎

Если вы хотите использовать существующий сертификат SSL для шифрования трафика вашего веб-сайта, в этом разделе приведены необходимые шаги для изменения конфигурации Nginx для этого.

Сначала создайте файл /etc/nginx/ssl.conf со следующим содержимым и настройте пути к вашему файлу сертификата и ключа. Последний раздел касается сшивания OSCP и требует, чтобы вы предоставили цепочку + корневой сертификат. Если вы этого не хотите, вы можете прокомментировать или удалить все, что находится под комментарием OCSP Stapling. Если ваш веб-сайт поддерживает только SSL (включая субдомены), вы можете отправить свой домен для предварительной загрузки в браузеры по адресу https://hstspreload.appspot.com. Если это не так, вы можете удалить preload; из строки, которая добавляет заголовок Strict-Transport-Security. Обязательно проверьте, работают ли все эти параметры для вашей установки.

ssl.conf:

# set the paths to your cert and key files here
+ssl_certificate /etc/ssl/certs/example.com.crt;
+ssl_certificate_key /etc/ssl/private/example.com.key;
+
+ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+
+ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
+ssl_prefer_server_ciphers on;
+
+ssl_session_cache shared:SSL:10m; # a 1mb cache can hold about 4000 sessions, so we can hold 40000 sessions
+ssl_session_timeout 24h;
+
+# Use a higher keepalive timeout to reduce the need for repeated handshakes
+keepalive_timeout 300s; # up from 75 secs default
+
+# submit domain for preloading in browsers at: https://hstspreload.appspot.com
+add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload;";
+
+# OCSP stapling
+# nginx will poll the CA for signed OCSP responses, and send them to clients so clients don't make their own OCSP calls.
+# see https://sslmate.com/blog/post/ocsp_stapling_in_apache_and_nginx on how to create the chain+root
+ssl_stapling on;
+ssl_stapling_verify on;
+ssl_trusted_certificate /etc/ssl/certs/example.com.chain+root.crt;
+resolver 198.51.100.1 198.51.100.2 203.0.113.66 203.0.113.67 valid=60s;
+resolver_timeout 2s;
+

Теперь измените содержимое вашей специфической для Grav конфигурации /etc/nginx/sites-available/grav-site, чтобы перенаправить незашифрованные HTTP-запросы на HTTPS, что означает, что серверный блок прослушивает порт 443 и включает ваш ssl.conf (замените example.com на свой домен/IP). Вы также можете изменить это для перенаправления с версии без www на версию вашего домена с www.

grav-site:

# redirect http to non-www https
+server {
+    listen [::]:80;
+    listen 80;
+    server_name example.com www.example.com;
+
+    return 302 https://example.com$request_uri;
+}
+
+# redirect www https to non-www https
+server {
+    listen [::]:443 ssl;
+    listen 443 ssl;
+    server_name www.example.com;
+
+    # add ssl cert & options
+    include ssl.conf;
+
+    return 302 https://example.com$request_uri;
+}
+
+# serve website
+server {
+    listen [::]:443 ssl;
+    listen 443 ssl;
+    server_name example.com;
+
+    # add ssl cert & options
+    include ssl.conf;
+
+    root /var/www/example.com;
+
+    index index.html index.php;
+
+    # ...
+    # the rest of this server block (location directives) is identical to the one from the shipped config
+}
+

Наконец, перезагрузите конфигурацию Nginx:

nginx -s reload
+

Заголовки Nginx Cache для активов⚓︎

Рекомендуется к включению на продакшене. 'expires' определяет время истечения срока действия кэша, в данном случае 30 дней. Пожалуйста, ознакомьтесь с полной документацией о http-заголовках для Nginx.

        location ~* ^/forms-basic-captcha-image.jpg$ {
+                try_files $uri $uri/ /index.php$is_args$args;
+        }
+
+        location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
+                expires 30d;
+                add_header Vary Accept-Encoding;
+                log_not_found off;
+        }
+
+        location ~* ^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$ {
+                access_log off;
+                expires 30d;
+                add_header Cache-Control public;
+
+## No need to bleed constant updates. Send the all shebang in one
+## fell swoop.
+                tcp_nodelay off;
+
+## Set the OS file cache.
+                open_file_cache max=3000 inactive=120s;
+                open_file_cache_valid 45s;
+                open_file_cache_min_uses 2;
+                open_file_cache_errors off;
+        }
+
\ No newline at end of file diff --git a/webservers-hosting/vps/generic/index.html b/webservers-hosting/vps/generic/index.html new file mode 100644 index 00000000..762c39c0 --- /dev/null +++ b/webservers-hosting/vps/generic/index.html @@ -0,0 +1,92 @@ + Универсальная установка VPS - Документация Grav CMS на русском

Универсальная установка VPS⚓︎

Пакеты обновлений и улучшений⚓︎

На этом этапе вы можете захотеть либо настроить локальную запись /etc/hosts, чтобы дать IP-адресу удобное понятное имя, такое как {{page.header.localname}}. Так вам будет проще подключиться к серверу по SSH с помощью ssh root@{{ page.header.localname }}.

После успешного подключения по SSH к вашему серверу как root первое, что вам нужно сделать, это обновить и обновить все установленные пакеты. Это гарантирует, что вы используете самые последние и самые лучшие:

$ apt-get update
+$ apt-get upgrade
+

Просто ответьте Y, если будет предложено.

Далее вам нужно будет установить несколько важных пакетов:

$ apt-get install vim zip unzip nginx git php7-fpm php7-cli php7-gd php7-curl php7-apcu
+

При этом будет установлен полный редактор VIM (а не мини-версия, которая поставляется с Ubuntu), веб-сервер Nginx, команды GIT и PHP 7.

Настройка пула подключений Nginx⚓︎

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

Перейдите в каталог пула и создайте новую конфигурацию grav:

$ cd /etc/php5/fpm/pool.d
+$ vi grav.conf
+

В VIM вы можете вставить следующую конфигурацию пула:

[grav]
+
+user = grav
+group = grav
+
+listen = /var/run/php5-fpm.grav.sock
+
+listen.owner = www-data
+listen.group = www-data
+
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 2
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+
+chdir = /
+

Ключевыми вещами здесь являются user и group, устанавливаемые на пользователя с именем grav, а также прослушивающий сокет, имеющий уникальное имя из стандартного сокета. Сохраните и выйдите из этого файла.

Теперь нам нужно создать специального пользователя grav:

$ adduser grav
+

Задайте надежный пароль и оставьте другие значения по умолчанию. Затем нам нужно создать подходящее место для Nginx для обслуживания файлов, поэтому давайте сменим пользователя и создадим эту папку, а также создадим пару тестовых файлов:

$ su - grav
+$ mkdir www;cd www;mkdir html;cd html
+

Создайте простой index.html с содержимым <h1> Working! </h1> и файл с именем ʻinfo.phpс содержимым<?php phpinfo();`

Теперь мы можем выйти из этого пользователя и вернуться к root, чтобы настроить конфигурацию сервера Nginx:

$ exit
+$ cd /etc/nginx/sites-available/
+$ vi grav
+

Затем просто вставьте эту конфигурацию:

server {
+    #listen 80;
+    index index.html index.php;
+
+    ## Begin - Server Info
+    root /home/USER/www/html;
+    server_name localhost;
+    ## End - Server Info
+
+    ## Begin - Index
+    # for subfolders, simply adjust:
+    # `location /subfolder {`
+    # and the rewrite to use `/subfolder/index.php`
+    location / {
+        try_files $uri $uri/ /index.php?$query_string;
+    }
+    ## End - Index
+
+    ## Begin - Security
+    # deny all direct access for these folders
+    location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
+    # deny running scripts inside core system folders
+    location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
+    # deny running scripts inside user folder
+    location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
+    # deny access to specific files in the root folder
+    location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }
+    ## End - Security
+
+    ## Begin - PHP
+    location ~ \.php$ {
+        # Choose either a socket or TCP/IP address
+        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
+        # fastcgi_pass unix:/var/run/php5-fpm.sock; #legacy
+        # fastcgi_pass 127.0.0.1:9000;
+
+        fastcgi_split_path_info ^(.+\.php)(/.+)$;
+        fastcgi_index index.php;
+        include fastcgi_params;
+        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
+    }
+    ## End - PHP
+}
+

Это стандартный файл nginx.conf, который поставляется с Grav с двумя изменениями: 1) root был адаптирован к нашему пользователю/папке, которую мы только что создали, а опция fastcgi_pass была установлена ​​на сокет, который мы определили в нашем пуле grav. Теперь нам просто нужно правильно связать этот файл, чтобы он был включен:

$ cd ../sites-enabled
+$ ln -s ../sites-available/grav
+$ rm default
+

Теперь все, что нам нужно сделать, это перезапустить Nginx и процесс php5-fpm и протестировать, чтобы убедиться, что мы правильно настроили Nginx и пул соединений PHP:

$ service nginx restart
+$ service php5-fpm restart
+

Теперь укажите в браузере свой сервер: http://{{page.header.localname}}, и вы должны увидеть текст: Working!

Вы также можете проверить, что PHP установлен и правильно работает, указав в своем браузере: http://{{page.header.localname}}/info.php. Вы должны увидеть стандартную информационную страницу PHP с перечисленными APCu, Opcache и т. д.

Установка Grav⚓︎

Это легкая часть! Сначала нам нужно вернуться к пользователю Grav, поэтому либо SSH как grav@{{page.header.localname}}, либо su - grav от имени пользователя root. Затем выполните следующие действия:

$ cd ~/www
+$ wget https://getgrav.org/download/core/grav/latest
+$ unzip grav-v{{ grav_version }}.zip
+$ rm -Rf html
+$ mv grav html
+

Теперь, когда всё готово, вы можете подтвердить установку Grav, указав в браузере страницу http://{{page.header.localname}}, и вы должны увидеть страницу Grav is Running!.

Поскольку вы тщательно следовали этим инструкциям, вы также сможете использовать Grav CLI и Grav GPM такие команды, как:

$ cd ~/www/html
+$ bin/grav clear
+
+Clearing cache
+
+Cleared:  cache/twig/*
+Cleared:  cache/compiled/*
+
+Touched: /home/grav/www/html/user/config/system.yaml
+

и команды GPM:

$ bin/gpm index
+
\ No newline at end of file diff --git a/webservers-hosting/vps/ubuntu-18.04/index.html b/webservers-hosting/vps/ubuntu-18.04/index.html new file mode 100644 index 00000000..1571ac86 --- /dev/null +++ b/webservers-hosting/vps/ubuntu-18.04/index.html @@ -0,0 +1,103 @@ + Установка VPS на Ubuntu 18.04 - Документация Grav CMS на русском

Установка VPS на Ubuntu 18.04⚓︎

Пакеты обновлений⚓︎

На этом этапе вы можете либо настроить локальную запись /etc/hosts, чтобы дать IP-адресу удобное понятное имя, такое как {{ page.header.localname }}. Так вам будет проще подключиться к серверу по SSH с помощью ssh root@{{ page.header.localname }}{% if ssh_port %} -p{{ ssh_port }}{% endif %}.

После успешного подключения по SSH к вашему серверу как root первое, что вам нужно сделать, это обновить и обновить все установленные пакеты. Это гарантирует, что вы используете самую свежую версию:

# apt update
+# apt upgrade
+

Просто ответьте Y, если будет предложено.

Прежде чем идти дальше, удалим Apache2, который мы заменим Nginx:

# apt remove apache2*
+# apt autoremove
+

Возможно, это не установлено. Но лучше перестраховаться!

Далее вам нужно будет установить несколько важных пакетов:

# apt install vim zip unzip nginx git php-fpm php-cli php-gd php-curl php-mbstring php-xml php-zip php-apcu
+

Это установит полный редактор VIM (а не мини-версию, которая поставляется с Ubuntu), веб-сервер Nginx, команды GIT и PHP 7.2.

Конфигурация PHP7.2 FPM⚓︎

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

# vim /etc/php/7.2/fpm/php.ini
+

Найдите cgi.fix_pathinfo. По умолчанию это будет закомментировано и установлено значение «1».

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

Раскомментируйте эту строку и измените «1» на «0», чтобы она выглядела так

cgi.fix_pathinfo=0
+

Сохраните и закройте файл, а затем перезапустите службу.

# systemctl restart php7.2-fpm
+

Настройка пула подключений Nginx⚓︎

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

Перейдите в каталог пула и создайте новую конфигурацию grav:

# cd /etc/php/7.2/fpm/pool.d
+# mv www.conf www.conf.bak
+# vim grav.conf
+

В Vim вы можете вставить следующую конфигурацию пула:

[grav]
+
+user = grav
+group = grav
+
+listen = /var/run/php/php7.2-fpm.sock
+
+listen.owner = www-data
+listen.group = www-data
+
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 2
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+
+chdir = /
+

Ключевыми вещами здесь являются user и group, устанавливаемые для пользователя с именем grav, и сокет прослушивания, имеющий уникальное имя из стандартного сокета. Сохраните и выйдите из этого файла.

Теперь нам нужно создать специального пользователя grav:

# adduser grav
+

Задайте надежный пароль и оставьте другие значения по умолчанию. Затем нам нужно создать подходящее место для Nginx для обслуживания файлов, поэтому давайте сменим пользователя и создадим эту папку, а также создадим пару тестовых файлов:

# su - grav
+$ mkdir -p www/html
+$ cd www/html
+

Создайте простой index.html с содержимым:

 <h1>Working!</h1>
+

..и файл с именем info.php с содержимым:

<?php phpinfo();
+

Теперь мы можем выйти из этого пользователя и вернуться к root, чтобы настроить конфигурацию сервера Nginx:

$ exit
+# cd /etc/nginx/sites-available/
+# vim grav
+

Затем просто вставьте эту конфигурацию:

server {
+    #listen 80;
+    index index.html index.php;
+
+    ## Begin - Server Info
+    root /home/grav/www/html;
+    server_name localhost;
+    ## End - Server Info
+
+    ## Begin - Index
+    # for subfolders, simply adjust:
+    # `location /subfolder {`
+    # and the rewrite to use `/subfolder/index.php`
+    location / {
+        try_files $uri $uri/ /index.php?$query_string;
+    }
+    ## End - Index
+
+    ## Begin - Security
+    # deny all direct access for these folders
+    location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
+    # deny running scripts inside core system folders
+    location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
+    # deny running scripts inside user folder
+    location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
+    # deny access to specific files in the root folder
+    location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }
+    ## End - Security
+
+    ## Begin - PHP
+    location ~ \.php$ {
+        # Choose either a socket or TCP/IP address
+        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
+        # fastcgi_pass unix:/var/run/php5-fpm.sock; #legacy
+        # fastcgi_pass 127.0.0.1:9000;
+
+        fastcgi_split_path_info ^(.+\.php)(/.+)$;
+        fastcgi_index index.php;
+        include fastcgi_params;
+        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
+    }
+    ## End - PHP
+}
+

Это стандартный файл nginx.conf, который поставляется с Grav с двумя изменениями. 1) root был адаптирован к нашему пользователю/папке, которую мы только что создали, а опция fastcgi_pass была установлена ​​на сокет, который мы определили в нашем пуле grav. Теперь нам просто нужно правильно связать этот файл, чтобы он был включен:

# cd ../sites-enabled
+# ln -s ../sites-available/grav
+# rm default
+

Вы можете проверить конфигурацию с помощью команды nginx -t. Он должен вернуть следующее.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
+nginx: configuration file /etc/nginx/nginx.conf test is successful
+

Теперь все, что нам нужно сделать, это перезапустить Nginx и процесс php7-fpm и протестировать, чтобы убедиться, что мы правильно настроили Nginx и пул соединений PHP:

# systemctl restart nginx
+# systemctl restart php7.2-fpm
+

Теперь укажите в браузере свой сервер: http://{{page.header.localname}}, и вы должны увидеть текст: Working!

Вы также можете проверить, что PHP установлен и правильно работает, указав в браузере: http://{{page.header.localname}}/info.php. Вы должны увидеть стандартную информационную страницу PHP с перечисленными APCu, Opcache и т. д.

Установка Grav⚓︎

Это легкая часть! Сначала нам нужно вернуться к пользователю Grav, поэтому либо SSH как grav@{{page.header.localname}}, либо su - grav от имени пользователя root, затем выполните следующие действия:

$ cd ~/www
+$ wget -O grav.zip https://getgrav.org/download/core/grav/latest
+$ unzip grav.zip
+$ rm -Rf html
+$ mv grav html
+

Теперь, когда все готово, вы можете подтвердить установку Grav, указав в браузере ссылку http://{{page.header.localname}}, и вы должны увидеть страницу Grav is Running!.

Поскольку вы тщательно следовали этим инструкциям, вы также сможете использовать такие команды, как:

$ cd ~/www/html
+$ bin/grav clear
+
+Clearing cache
+
+Cleared:  cache/twig/*
+Cleared:  cache/compiled/*
+
+Touched: /home/grav/www/html/user/config/system.yaml
+

и команды GPM:

$ bin/gpm index
+
\ No newline at end of file diff --git a/webservers-hosting/windows-subsystem-for-linux/index.html b/webservers-hosting/windows-subsystem-for-linux/index.html new file mode 100644 index 00000000..bed4db4f --- /dev/null +++ b/webservers-hosting/windows-subsystem-for-linux/index.html @@ -0,0 +1,97 @@ + Подсистема Windows для Linux - Документация Grav CMS на русском

Подсистема Windows для Linux⚓︎

Подсистема Windows для Linux позволяет разработчикам запускать среду GNU/Linux - включая большинство инструментов командной строки, служебных программ и приложений - непосредственно в Windows без изменений, без дополнительных затрат на виртуальную машину.

Вы можете:

  • Выбирать свои любимые дистрибутивы GNU/Linux из Магазина Windows.
  • Запускать распространенное бесплатное программное обеспечение из командной строки, такое как grep, sed, awk или другие двоичные файлы ELF-64.
  • Запускать сценарии оболочки Bash и приложения командной строки GNU/Linux, включая:
    • Инструменты: vim, emacs, tmux
    • Языки: Javascript/Node.js, Ruby, Python, C/C++, C# и F#, Rust, Go и т. д.
    • Сервисы: sshd, MySQL, Apache, lighttpd
  • Установить дополнительное программное обеспечение с помощью собственного менеджера пакетов дистрибутива GNU/Linux.
  • Вызывать приложения Windows с помощью Unix-подобной оболочки командной строки.
  • Вызывать приложения GNU/Linux в Windows.

Для получения дополнительной информации смотрите Документацию по подсистеме Windows для Linux.

Установка подсистемы Windows для Linux⚓︎

Установка подсистемы Windows для Linux хорошо описана в статье Microsoft Установить подсистему Windows для Linux. Вместо стандартного дистрибутива Ubuntu, упомянутого в руководстве по установке, найдите и выберите последнюю версию Ubuntu 18.04 LTS.

Чтобы инициализировать и обновить установку Ubuntu, выполните Инициализацию вновь установленного дистрибутива. Этот шаг можно пропустить, если вы уже инициализировали дистрибутив Ubuntu на предыдущем шаге.

Важным аспектом WSL является то, что инструменты Windows не могут получить доступ к файлам, хранящимся внутри Ubuntu. Однако Ubuntu может (почти) свободно читать/записывать файловую систему Windows. Следовательно, файлы, к которым требуется доступ для инструментов Windows (например, ваша IDE, резервное копирование), должны храниться в файловой системе Windows.

При доступе к файловой системе Windows из оболочки bash вам необходимо добавить путь к /mnt/c/. Хотя это и не обязательно, при создании символических ссылок лучше всего использовать тот же самый регистр пути к файлу.

Установка Apache⚓︎

Используйте следующую команду в оболочке bash для установки Apache:

sudo apt install apache2
+

Терминал, используемый WSL, не поддерживает вставку текста, как вы привыкли. Используйте правую кнопку мыши для вставки.

Создайте папку проекта для своих веб-сайтов. По причинам, указанным выше, эта папка должна находиться за пределами файловой системы WSL. Вы можете использовать, например: C:/Users/<Username>/Documents/Development/Web/webroot, или просто C:/webroot.

В Ubuntu создайте символическую ссылку на папку webroot.

sudo ln -s /mnt/c/your/path/to/webroot /var/www/webroot
+

Откройте файл конфигурации виртуального хоста Apache по умолчанию:

sudo nano /etc/apache2/sites-available/000-default.conf
+

Удалите существующий контент, удерживая нажатой клавишу Shift, и прокрутите вниз с помощью клавиши Down. Затем нажмите Ctrl+K, чтобы вырезать выделение.

Вставьте следующую конфигурацию VirtualHost:

<VirtualHost *:80>
+
+    ServerName localhost
+
+    ServerAdmin webmaster@localhost
+    DocumentRoot  /var/www/webroot
+
+    <Directory /var/www/>
+        Options Indexes FollowSymLinks
+        AllowOverride All
+        Require all granted
+    </Directory>
+
+    ErrorLog ${APACHE_LOG_DIR}/error.log
+    CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+</VirtualHost>
+

Сохраните файл, нажав Ctrl+O, и нажмите Enter для подтверждения. Выйдите с помощью Ctrl+X.

(В командной строке ^ означает Ctrl, а M означает Alt)

Откройте ваш любимый редактор/IDE в Windows и создайте файл index.html в корневой папке со следующим содержимым:

<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <title>It works!</title>
+</head>
+<body>
+  <h1>It works!</h1>
+</body>
+</html>
+

Запустите службу Apache:

sudo service apache2 start
+

Вероятно, вы получите следующее известное сообщение об ошибке, которое можно игнорировать:

(92)Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT

Откройте http://localhost в вашем браузере, и вы должны увидеть текст 'It works!'.

Для правильной работы ваших будущих Grav-сайтов необходимо включить модуль Apache rewrite.

sudo a2enmod rewrite
+

Установка PHP⚓︎

Используйте следующую команду для установки последней версии PHP:

sudo apt install php
+

Чтобы убедиться, что PHP установлен, и проверить его версию, выполните следующую команду:

php -v
+
Вы должны получить примерно такой ответ:
PHP 7.2.7-0ubuntu0.18.04.2 (cli) (built: Jul  4 2018 16:55:24) ( NTS )
+Copyright (c) 1997-2018 The PHP Group
+Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
+

Чтобы соответствовать требованиям Grav к PHP, необходимо установить несколько дополнительных расширений PHP:

sudo apt install php-mbstring php-gd php-curl php-xml php-zip
+

Перезапустите Apache, чтобы изменения вступили в силу:

sudo service apache2 restart
+

Установка Grav⚓︎

Вы можете установить Grav как из Windows, так и из Ubuntu.

Вариант 1: Windows⚓︎

Установите Grav, загрузив ZIP-архив и распаковав его: 1. Загрузите самую последнюю и лучшую версию Grav или пакет Grav + Admin. 1. Распакуйте ZIP-файл в созданный вами ранее веб-корневой каталог. 1. Переименуйте извлеченную папку в mysite. 1. Откройте ссылку http://localhost/mysite в браузере, и у вас должна быть работающая установка Grav.

Вариант 2: Ubuntu⚓︎

Выполните следующие команды, чтобы установить Grav в корневой веб-каталог Apache по умолчанию:

wget -O grav.zip https://getgrav.org/download/core/grav/latest
+sudo apt install unzip  # unzip is not installed by default on WSL/Ubuntu
+unzip grav.zip -d /var/www/webroot
+mv /var/www/webroot/grav /var/www/webroot/mysite
+

Откройте ссылку http://localhost/mysite в браузере, и у вас должна быть работающая установка Grav.

Чтобы узнать о других вариантах установки, посетите документацию Grav.

Установка XDebug (необязательно)⚓︎

Если вы разработчик и хотите разрабатывать свои собственные плагины и темы, вам вероятно в какой-то момент неизбежно потребуется отладить свой код...

Установите XDebug с помощью следующей команды:

sudo apt install php-xdebug
+

XDebug должен быть включен в php.ini.
Откройте редактор:

sudo nano /etc/php/7.2/apache2/php.ini
+

И в конец файла добавьте следующие строки:

[XDebug]
+xdebug.remote_enable = 1
+

В Nano вы можете использовать Alt+/ для перехода к нижней части файла.

Снова перезапустите Apache:

sudo service apache2 restart
+

Активация отладчика⚓︎

Для того, чтобы начать отладку, вам сначала нужно активировать отладчик на сервере. Для этого нужно установить специальный параметр GET/POST или COOKIE. Вы можете сделать это вручную, но гораздо удобнее использовать расширение браузера. Это позволяет вам включить отладчик одним нажатием кнопки. Когда расширение активно, оно отправляет cookie XDEBUG_SESSION напрямую, вместо того, чтобы проходить через XDEBUG_SESSION_START. Ниже вы можете найти таблицу со ссылкой на соответствующее расширение для вашего браузера.

Браузер Расширение
Chrome Xdebug Helper
Firefox Xdebug Helper или The easiest Xdebug
Opera Xdebug launcher

Если вы хотите включить/выключить отладку для веб-сайта, просто включите «Отладка» в расширении браузера.

Запуск отладчика в Visual Studio Code (необязательно)⚓︎

При использовании Vistual Studio Code средства запуска отладки PHP по умолчанию не будут работать, когда Apache/PHP работает в WSL, из-за сопоставлений файлов.

Вставьте следующую конфигурацию в уже созданную конфигурацию запуска PHP в .vscode/launch.json:

{
+    "name": "LSW Listen for XDebug",
+    "type": "php",
+    "request": "launch",
+    "port": 9000,
+    "pathMappings": {
+        "/mnt/c": "c:/",
+    }
+}
+

Добавление дополнительных виртуальных хостов (необязательно)⚓︎

На разных этапах жизненного цикла нашего сайта (разработка, тестирование, производство) могут потребоваться разные конфигурации Grav. Возьмем, к примеру, кэширование или конвейеры активов. Возможно, вы захотите отключить их во время разработки и включить их при тестировании производительности. Для получения дополнительной информации см. документацию по автоматической настройке среды:

  • Запустите редактор от имени администратора и откройте файл C:/Windows/System32/drivers/etc/hosts. Например, вы можете добавить следующие хосты:

    127.0.0.1 mysite-dev
    +127.0.0.1 mysite-prod
    +

    Хосты, определённые в файле hosts Windows, будут автоматически доступны в /etc/hosts в WSL/Ubuntu. * Создайте новые файлы конфигурации VirtualHost в папке /etc/apache2/sites-available.

    sudo nano /etc/apache2/sites-available/mysite-dev.conf
    +
    Вставьте следующий код в редактор:
    <VirtualHost *:80>
    +
    +    ServerName mysite-dev
    +
    +    ServerAdmin webmaster@localhost
    +    DocumentRoot  /var/www/webroot/mysite
    +
    +    <Directory /var/www/>
    +        Options Indexes FollowSymLinks
    +        AllowOverride All
    +        Require all granted
    +    </Directory>
    +
    +    ErrorLog ${APACHE_LOG_DIR}/error.log
    +    CustomLog ${APACHE_LOG_DIR}/access.log combined
    +
    +</VirtualHost>
    +
    Повторите приведенные выше команды для mysite-prod.conf и используйте ServerName mysite-prod в качестве сервера.

Включите новый VirtualHosts в конфигурации Apache:

sudo a2ensite mysite-*
+sudo service apache2 reload
+sudo service apache2 restart
+
Теперь вы можете указать в браузере http://mysite-dev и он откроет установку Grav по адресу C:/your/path/to/webroot/mysite, используя файлы конфигурации в папке /user/mysite-dev/config/.

Автоматический запуск Apache (необязательно)⚓︎

Для запуска и остановки Apache требуются повышенные привилегии. А чтобы получить повышенные привилегии, требуется пароль. Чтобы Ubuntu не запрашивал пароль, вы можете предоставить себе постоянные повышенные привилегии для определённых служб.

Запустите редактор visudo, чтобы отредактировать файл sudoer:

sudo visudo -f /etc/sudoers.d/services
+

Скопируйте в редактор следующие строки:

%sudo ALL=(root) NOPASSWD: /usr/sbin/service *
+%wheel ALL=(root) NOPASSWD: /usr/sbin/service *
+

Теперь Apache можно запустить с повышенными привилегиями без ввода пароля.

Чтобы запускать Apache всякий раз, когда запускается оболочка Ubuntu, необходимо добавить команду sudo service apache2 start в сценарий запуска .bashrc. Этот сценарий запускается всякий раз, когда вы запускаете терминал WSL.

nano .bashrc
+

Добавьте в конец файла следующий скрипт:

## Start apache2 if not running
+status=`service apache2 status`
+if [[ $status == *"apache2 is not running" ]]
+then
+  sudo service apache2 start
+fi
+

И добавьте следующее в .bash_logout, чтобы остановить Apache при закрытии оболочки bash:

## Stop apache2 if running
+status=`service apache2 status`
+if [[ $status == *"apache2 is running" ]]
+then
+  sudo service apache2 stop
+fi
+

Советы и рекомендации⚓︎

Графический эмулятор терминала Linux⚓︎

Если вы не являетесь поклонником терминала по умолчанию и хотели бы установить «собственный» терминал с графическим интерфейсом пользователя Linux, вы можете прочитать статью Настройка красивого и удобного эмулятора терминала для WSL.

Несколько веб-сайтов, одна кодовая база Grav⚓︎

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

\ No newline at end of file

update⚓︎