Генератор статических страниц
Pimcore предлагает сервис генерации статических страниц, который используется для создания HTML-страниц из документов Pimcore. Этот сервис-генератор использует документ Pimcore с содержимым и шаблонами и преобразует их в полноценную HTML-страницу, которая может быть загружена непосредственно с сервера без вмешательства механизма создания шаблонов.
Включение генератора статических страниц для документа
Чтобы включить автоматическую генерацию статических страниц при сохранении документа или с помощью команды CLI, перейдите в раздел Document -> Settings -> Satic Page Generator.

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

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

Кроме того, если вы используете локальное хранилище по умолчанию для статических страниц, убедитесь, что в .htaccess вашего проекта есть следующий раздел (после раздела # Thumbnails), который отвечает за поиск статической страницы перед передачей в механизм создания шаблонов.
# static pages
SetEnvIf Request_URI ^(.*)$ STATIC_PAGE_URI=$1
SetEnvIf Request_URI / STATIC_PAGE_URI=/%home
RewriteCond %{REQUEST_METHOD} ^(GET|HEAD)
RewriteCond %{QUERY_STRING} !(pimcore_editmode=true|pimcore_preview|pimcore_version)
RewriteCond %{DOCUMENT_ROOT}/var/tmp/pages%{STATIC_PAGE_URI}.html -f
RewriteRule ^(.*)$ /var/tmp/pages%{STATIC_PAGE_URI}.html [PT,L]
Если вы используете NGINX в качестве веб-сервера, это должно быть добавлено перед блоком server
map $args $static_page_root {
default /var/tmp/pages;
"~*(^|&)pimcore_editmode=true(&|$)" /var/nonexistent;
"~*(^|&)pimcore_preview=true(&|$)" /var/nonexistent;
"~*(^|&)pimcore_version=[^&]+(&|$)" /var/nonexistent;
}
map $uri $static_page_uri {
default $uri;
"/" /%home;
}
и в блок местоположения, соответствующий всем запросам, необходимо внести следующие изменения
server {
...
location / {
error_page 404 /meta/404;
try_files $static_page_root$static_page_uri.html $uri /index.php$is_args$args;
}
...
}
Обработка
Как только опция статического генератора включена, Pimcore генерирует статические страницы при выполнении следующих действий:
- Первый запрос на страницу после обновления и сохранения документа в admin.
- Задание на обслуживание (maintenance)
- Команда CLI
В фоновом режиме maintenance job регулярно генерирует статические страницы для документов. Однако вы также можете использовать команду CLI для создания статических страниц по требованию:
php bin/console pimcore:documents:generate-static-pages
кроме того, вы можете отфильтровать документы по родительскому пути, который должен быть обработан для статической генерации:
php bin/console pimcore:documents:generate-static-pages -p /en/Magazine
SSI
Если вы хотите добавить SSI-модуль NGINX для генерации статических страниц, вы можете добавить следующую конфигурацию:
pimcore:
document:
static_page_generator:
headers:
- { name: "Surrogate-Capability", value: 'device="SSI/1.0"' }
Теперь команда обслуживания может генерировать SSI-файлы в статических файлах, как при обычной загрузке страницы.
Хранение
По умолчанию Pimcore сохраняет сгенерированные HTML-страницы по локальному пути: 'document_root/public/var/tmp/pages'.
Можно настроить путь к локальному хранилищу для статических страниц, определив конфигурацию Flysystem в файле config.yaml:
flysystem:
storages:
pimcore.document_static.storage:
# Storage for generated static document pages, e.g. .html files generated out of Pimcore documents
# which are then delivered directly by the web-server
adapter: 'local'
visibility: public
options:
directory: '%kernel.project_dir%/public/var/tmp/pages'
Маршрутизатор генерации статических страниц
В случае, если вы используете пользовательское удаленное хранилище для статических страниц и вам необходимо обслуживать страницы из этого удаленного хранилища, вам необходимо включить маршрутизатор статических страниц со следующей конфигурацией в config.yaml:
pimcore:
documents:
static_page_router:
enabled: true
route_pattern: '@^/(en/Magazine|de/Magazin)@'
| конфигурация | Описание |
|---|---|
| enabled | Установите значение true, чтобы включить маршрутизатор статических страниц |
| route_pattern | Регулярное выражение для подбора маршрутов для статического отображения страницы |
Используйте статические HTML-файлы страниц с указанием mainDomain вместо path
Включите опцию основного домена (mainDomain), чтобы получать статические страницы с начальным основным доменом вместо ключей из документов Pimcore.
pimcore:
documents:
static_page_generator:
use_main_domain: true
| конфигурация | Описание |
|---|---|
| use_main_domain | Используйте путь tmp следующим образом /public/var/tmp/pages/my-domain.com/en.html |
Изменения в конфигурации NGINX:
map $args $static_page_root {
default /var/tmp/pages/$host;
"~*(^|&)pimcore_editmode=true(&|$)" /var/nonexistent;
"~*(^|&)pimcore_preview=true(&|$)" /var/nonexistent;
"~*(^|&)pimcore_version=[^&]+(&|$)" /var/nonexistent;
}
map $uri $static_page_uri {
default $uri;
"/" /%home;
}
Генерация статической страницы с помощью Ajax-запроса
Статические страницы с XMLHttpRequest извлекают данные и отображают их на странице, как на стандартной странице документа.
Однако, если вы используете Fetch API для запроса данных, необходимо добавить заголовок XMLHttpRequest, как показано ниже,
в противном случае подзапрос заменит содержимое сгенерированной статической страницы.
fetch('/test/page', {
headers: {
'X-Requested-With': 'XMLHttpRequest',
}
})
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.