Skip to content
  1. Компоненты
  2. MigxPageConfigurator
  3. Нарезка

Нарезка

Нарезка — это запуск, который превращает размеченный файл-шаблон в рабочую страницу: вырезает секции и чанки в отдельные файлы, переносит значения полей в админку (TV mpc_config), при необходимости выносит тексты в лексиконы и «запекает» готовую конфигурацию для фронта. Всё, что вы описали атрибутами data-mpc-* (см. Разметка вёрстки), оживает именно на этом шаге.

Нарезку запускают:

  • при первой натяжке шаблона — чтобы разложить вёрстку по файлам и завести данные в админке;
  • после правок в файле-шаблоне — повторный запуск применяет изменения (источник истины — шаблон, а не сгенерированные файлы секций);
  • при добавлении новых полей/секций/сниппетов в разметку.

Главное правило

Правьте файл-шаблон и запускайте нарезку заново. Сгенерированные файлы секций (sections/), чанков (chunks/) и запечённые конфигурации (parsed/) править руками не нужно — повторная нарезка их перезапишет. Подробнее — в разделе «Рендеринг».

Что должно быть готово до нарезки

  1. Установлен и настроен компонент — см. Начало работы.
  2. Файл-шаблон с разметкой data-mpc-* лежит в папке исходников (настройка mpc_path_to_src, по умолчанию templates/). Все пути компонента отсчитываются относительно pdotools_elements_path — то есть указанная папка ищется внутри неё. О структуре файла-шаблона, обёртке (wrapper) и заголовке — см. Разметка вёрстки.
  3. Если планируете мультиязычность — включена настройка mpc_use_lexicons (см. Лексиконы и мультиязычность).

Как запустить нарезку

Нарезка запускается из консоли (CLI), на сервере. Есть два способа: новая обёртка mpc (рекомендуется) и старый скрипт mgr_tpl.php (оставлен для совместимости).

Способ 1. Обёртка console/mpc (рекомендуется)

sh
./console/mpc cut <файл.tpl|all> [--upd] [--ctx=web] [--dry-run]

Обёртка лежит в core/components/migxpageconfigurator/console/. Она сама находит php; если на сервере нужная версия php лежит по нестандартному пути — укажите его явно через переменную окружения MPC_PHP:

sh
export MPC_PHP=/путь/к/нужному/php

Нарезать один шаблон:

sh
./console/mpc cut services.tpl

Нарезать все шаблоны из папки исходников (рекурсивно, включая вложенные папки):

sh
./console/mpc cut all

Посмотреть, что произойдёт, без записи — флаг --dry-run:

sh
./console/mpc cut all --dry-run

Подсказка

Перед боевым запуском, особенно с --upd, полезно прогнать --dry-run — он покажет, что и в каком контексте было бы нарезано, ничего не меняя.

Указать контекст (по умолчанию web) — флаг --ctx:

sh
./console/mpc cut all --ctx=en

Способ 2. Скрипт mgr_tpl.php (легаси)

sh
php -d display_errors -d error_reporting=E_ALL \
  public_html/core/components/migxpageconfigurator/console/mgr_tpl.php <контекст> <файл.tpl|all> <upd>

Аргументы — строго по позиции:

ПозицияЗначениеПример
1контекстweb
2имя файла шаблона или allservices.tpl / all
3флаг обновления контента (любое непустое значение = вкл.)1

Примеры:

sh
# нарезать один шаблон без обновления контента
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 — обычная нарезка (умный мерж)

sh
./console/mpc cut services.tpl

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

С --upd — обновление контента (полная перезапись)

sh
./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.

Что происходит при нарезке: три фазы

Для каждого файла-шаблона компонент выполняет три шага подряд:

  1. Перенос данных в админку. Размеченные значения (поля, контакты, системная информация, TV) переносятся в TV mpc_config ресурса. Если ресурса-страницы для шаблона ещё нет — он создаётся (как дочерний к «Типам страниц»). На этом же шаге, при включённых лексиконах, переводимые тексты выносятся в lexicon-файлы и синхронизируются по языкам.
  2. Нарезка файлов. Размеченные секции (data-mpc-section) вырезаются в файлы секций, чанки (data-mpc-chunk) — в файлы чанков, а на их место в шаблоне подставляются вызовы Fenom. Подробности по сниппетам и чанкам — в разделах Работа со сниппетами и Работа с чанками.
  3. Запекание. Конфигурация страницы парсится (плейсхолдеры заменяются значениями, кэшируемые сниппеты — результатом работы) и складывается в parsed/{id}.tpl. Это и есть то, что отдаётся на фронт без повторного парсинга на каждый запрос — см. «Рендеринг».

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

Кэш

mpc_dev_mode — режим разработки

Пока вы активно правите шаблон и хотите видеть изменения сразу, включите системную настройку mpc_dev_mode = Да. Тогда при каждом запуске нарезки очищается вся папка parsed/ (и кэш сайта), и запечённые конфигурации пересобираются заново.

На боевом сайте mpc_dev_mode обычно держат выключенным — тогда нарезка не сбрасывает весь parsed/ целиком.

Ленивая регенерация parsed/

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

Очистка parsed/ вручную

Очистить запечённые конфигурации можно командой:

sh
# очистить все parsed-файлы
./console/mpc cache clear

# очистить только указанные ресурсы (по id, через запятую)
./console/mpc cache clear 12,15,20

Если в админку зайти нельзя, тот же эффект (очистка папки parsed/) даёт скрипт:

sh
php public_html/core/components/migxpageconfigurator/console/clear_cache.php

Из админки кэш компонента (включая parsed/) очищается через стандартный пункт очистки кэша в шапке.

Создание ресурсов, TV и других элементов

Нарезка работает с уже существующим (или автоматически созданным) ресурсом-страницей. Если же нужно массово создать дерево ресурсов, TV, сниппеты или плагины из манифестов — это отдельные команды, см. Создание и обновление элементов и Консольные команды (CLI).