Нарезка
Нарезка — это запуск, который превращает размеченный файл-шаблон в рабочую страницу: вырезает секции и чанки в отдельные файлы, переносит значения полей в админку (TV mpc_config), при необходимости выносит тексты в лексиконы и «запекает» готовую конфигурацию для фронта. Всё, что вы описали атрибутами data-mpc-* (см. Разметка вёрстки), оживает именно на этом шаге.
Нарезку запускают:
- при первой натяжке шаблона — чтобы разложить вёрстку по файлам и завести данные в админке;
- после правок в файле-шаблоне — повторный запуск применяет изменения (источник истины — шаблон, а не сгенерированные файлы секций);
- при добавлении новых полей/секций/сниппетов в разметку.
Главное правило
Правьте файл-шаблон и запускайте нарезку заново. Сгенерированные файлы секций (sections/), чанков (chunks/) и запечённые конфигурации (parsed/) править руками не нужно — повторная нарезка их перезапишет. Подробнее — в разделе «Рендеринг».
Что должно быть готово до нарезки
- Установлен и настроен компонент — см. Начало работы.
- Файл-шаблон с разметкой
data-mpc-*лежит в папке исходников (настройкаmpc_path_to_src, по умолчаниюtemplates/). Все пути компонента отсчитываются относительноpdotools_elements_path— то есть указанная папка ищется внутри неё. О структуре файла-шаблона, обёртке (wrapper) и заголовке — см. Разметка вёрстки. - Если планируете мультиязычность — включена настройка
mpc_use_lexicons(см. Лексиконы и мультиязычность).
Как запустить нарезку
Нарезка запускается из консоли (CLI), на сервере. Есть два способа: новая обёртка mpc (рекомендуется) и старый скрипт mgr_tpl.php (оставлен для совместимости).
Способ 1. Обёртка console/mpc (рекомендуется)
./console/mpc cut <файл.tpl|all> [--upd] [--ctx=web] [--dry-run]Обёртка лежит в core/components/migxpageconfigurator/console/. Она сама находит php; если на сервере нужная версия php лежит по нестандартному пути — укажите его явно через переменную окружения MPC_PHP:
export MPC_PHP=/путь/к/нужному/phpНарезать один шаблон:
./console/mpc cut services.tplНарезать все шаблоны из папки исходников (рекурсивно, включая вложенные папки):
./console/mpc cut allПосмотреть, что произойдёт, без записи — флаг --dry-run:
./console/mpc cut all --dry-runПодсказка
Перед боевым запуском, особенно с --upd, полезно прогнать --dry-run — он покажет, что и в каком контексте было бы нарезано, ничего не меняя.
Указать контекст (по умолчанию web) — флаг --ctx:
./console/mpc cut all --ctx=enСпособ 2. Скрипт mgr_tpl.php (легаси)
php -d display_errors -d error_reporting=E_ALL \
public_html/core/components/migxpageconfigurator/console/mgr_tpl.php <контекст> <файл.tpl|all> <upd>Аргументы — строго по позиции:
| Позиция | Значение | Пример |
|---|---|---|
| 1 | контекст | web |
| 2 | имя файла шаблона или all | services.tpl / all |
| 3 | флаг обновления контента (любое непустое значение = вкл.) | 1 |
Примеры:
# нарезать один шаблон без обновления контента
php ... console/mgr_tpl.php web services.tpl
# нарезать один шаблон С обновлением контента (полная перезапись)
php ... console/mgr_tpl.php web services.tpl 1
# нарезать все шаблоны
php ... console/mgr_tpl.php web allВерсия PHP
Запускайте нарезку той же версией PHP, на которой работает сайт — см. Начало работы.
Два режима: обычная нарезка и обновление контента (--upd)
Это самое важное отличие при повторной нарезке уже работающего сайта, где контент-менеджер мог что-то поправить в админке.
Без --upd — обычная нарезка (умный мерж)
./console/mpc cut services.tplКомпонент применяет изменения структуры (новые поля, секции, сниппеты, перемещения), но бережёт ручные правки: значения полей и переводы, изменённые в админке, сохраняются. Это безопасный режим по умолчанию — им пользуются после натяжки, когда сайт уже наполнен.
С --upd — обновление контента (полная перезапись)
./console/mpc cut services.tpl --updКонтент секций и переводы перезаписываются значениями из вёрстки целиком. Ручные правки в админке при этом теряются. Режим нужен, когда исходная вёрстка — это и есть актуальный контент (например, на этапе разработки или при пересборке эталонного шаблона).
Осторожно
--upd затирает правки контента, сделанные в админке. Сам флаг — это осознанный выбор перезаписи. На боевом сайте сначала прогоните --dry-run и убедитесь, что менеджер не вносил важных изменений напрямую.
| Структура (новые поля, секции) | Контент и переводы из админки | |
|---|---|---|
без --upd | применяется | сохраняется |
--upd | применяется | перезаписывается из вёрстки |
Что и куда складывается
Все папки ниже указываются относительно pdotools_elements_path и настраиваются системными настройками. Полный разбор путей — в разделе «Пути файлов компонента».
| Что | Папка (относительно pdotools_elements_path) | Настройка (значение по умолчанию) |
|---|---|---|
| Исходные файлы-шаблоны (вход нарезки) | templates/ | mpc_path_to_src (templates/) |
| Файлы секций | sections/ | mpc_path_to_sections (sections/) |
| Вырезанные чанки | chunks/ | mpc_path_to_chunks (chunks/) |
| Запечённые конфигурации страниц | parsed/ | mpc_path_to_dist (parsed/) |
Лексиконы (при mpc_use_lexicons) | core/components/migxpageconfigurator/lexicon/<язык>/ | — |
| Значения полей секций | TV mpc_config ресурса (JSON) | — |
Запечённый файл конфигурации называется по id ресурса — например parsed/12.tpl. Путь к файлу каждой секции виден в админке в поле file_name.
Что происходит при нарезке: три фазы
Для каждого файла-шаблона компонент выполняет три шага подряд:
- Перенос данных в админку. Размеченные значения (поля, контакты, системная информация, TV) переносятся в TV
mpc_configресурса. Если ресурса-страницы для шаблона ещё нет — он создаётся (как дочерний к «Типам страниц»). На этом же шаге, при включённых лексиконах, переводимые тексты выносятся в lexicon-файлы и синхронизируются по языкам. - Нарезка файлов. Размеченные секции (
data-mpc-section) вырезаются в файлы секций, чанки (data-mpc-chunk) — в файлы чанков, а на их место в шаблоне подставляются вызовы Fenom. Подробности по сниппетам и чанкам — в разделах Работа со сниппетами и Работа с чанками. - Запекание. Конфигурация страницы парсится (плейсхолдеры заменяются значениями, кэшируемые сниппеты — результатом работы) и складывается в
parsed/{id}.tpl. Это и есть то, что отдаётся на фронт без повторного парсинга на каждый запрос — см. «Рендеринг».
После прохода по всем файлам компонент обновляет кэш сайта: сбрасывает кэш лексиконов (lexicon_topics) и кэш ресурсов текущего контекста, чтобы свежие тексты и переводы сразу подхватились на фронте.
Кэш
mpc_dev_mode — режим разработки
Пока вы активно правите шаблон и хотите видеть изменения сразу, включите системную настройку mpc_dev_mode = Да. Тогда при каждом запуске нарезки очищается вся папка parsed/ (и кэш сайта), и запечённые конфигурации пересобираются заново.
На боевом сайте mpc_dev_mode обычно держат выключенным — тогда нарезка не сбрасывает весь parsed/ целиком.
Ленивая регенерация parsed/
Если запечённого файла конфигурации для ресурса нет, он создаётся автоматически при первом обращении к странице. Поэтому очистка parsed/ безопасна: удалённые файлы регенерируются на лету.
Очистка parsed/ вручную
Очистить запечённые конфигурации можно командой:
# очистить все parsed-файлы
./console/mpc cache clear
# очистить только указанные ресурсы (по id, через запятую)
./console/mpc cache clear 12,15,20Если в админку зайти нельзя, тот же эффект (очистка папки parsed/) даёт скрипт:
php public_html/core/components/migxpageconfigurator/console/clear_cache.phpИз админки кэш компонента (включая parsed/) очищается через стандартный пункт очистки кэша в шапке.
Создание ресурсов, TV и других элементов
Нарезка работает с уже существующим (или автоматически созданным) ресурсом-страницей. Если же нужно массово создать дерево ресурсов, TV, сниппеты или плагины из манифестов — это отдельные команды, см. Создание и обновление элементов и Консольные команды (CLI).
