Копирование секций
Слово «копирование» в компоненте применимо к двум разным задачам:
- Вывести одну и ту же секцию дважды на странице — с одинаковой вёрсткой, но своим контентом в каждой копии. Делается в разметке атрибутом
data-mpc-copy. - Наполнить страницу секциями другого ресурса — взять набор секций «типа страницы» и положить его в текущий ресурс. Делается кнопками в гриде
mpc_config.
Разберём обе.
Копия секции в разметке (data-mpc-copy)
Секции на странице различаются по машинному имени data-mpc-section. Если вывести две секции с одинаковым data-mpc-section, при сохранении вторая перепишет первую — они схлопнутся в одну (см. Разметка вёрстки). Чтобы вывести одну и ту же секцию дважды и дать каждой свой контент, вторую помечают атрибутом data-mpc-copy и задают ей собственный префикс переводов data-mpc-lexicon.
Вход — оригинал и копия в шаблоне:
<!-- оригинал -->
<section data-mpc-section="features" data-mpc-name="Преимущества">
<h2 data-mpc-field="title">Наши преимущества</h2>
<p data-mpc-field="text">Работаем с 2010 года</p>
</section>
<!-- копия: та же вёрстка, свой контент и переводы -->
<section data-mpc-section="features" data-mpc-copy data-mpc-lexicon="features_demo" data-mpc-name="Преимущества (тариф Демо)">
<h2 data-mpc-field="title">Преимущества тарифа Демо</h2>
<p data-mpc-field="text">Попробуйте бесплатно 14 дней</p>
</section>Выход после нарезки:
- файл секции (
features.tpl) нарезается один раз — из оригинала; копия переиспользует тот же файл, повторно он не пишется; - в гриде
mpc_configпоявляются две секции — «Преимущества» и «Преимущества (тариф Демо)» — у каждой свой контент; - переводы тоже раздельные: оригинал пишет их под префиксом
features, копия — подfeatures_demo.
Копии обязательно нужен свой data-mpc-lexicon
Именно разный префикс переводов разводит оригинал и копию в две отдельные секции. Если оставить копии тот же префикс, что и у оригинала (по умолчанию он равен имени секции), их данные склеятся, и при сохранении одна перепишет другую. Подробнее про data-mpc-lexicon — в Разметке вёрстки и Лексиконах.
Копии чанков
Тем же атрибутом data-mpc-copy помечают повторно используемые чанки — чтобы их файл не нарезался заново, а только ставилось подключение. Это разобрано в разделе Разметка вёрстки → Сниппеты и чанки.
Копирование секций из типа (кнопки в гриде)
Часто страница одного типа должна начинаться с того же набора секций, что задан в «типе страницы» (ресурсе-доноре). Чтобы не переносить секции вручную, в тулбаре грида mpc_config (TV конфигурации страницы) есть три кнопки:
| Кнопка | Что делает |
|---|---|
| Дополнить секции из типа | Добавляет в ресурс те секции типа, которых у него ещё нет. Уже имеющиеся секции и ваши правки в них сохраняются. |
| Перезаписать секции из типа | Заменяет конфигурацию ресурса конфигурацией типа целиком. Правки секций ресурса при этом теряются. |
| Очистить секции | Удаляет конфигурацию секций ресурса (делает её пустой). |
Каждая кнопка спрашивает подтверждение, а «Перезаписать» и «Очистить» прямо предупреждают, что правки секций ресурса будут потеряны.
После нажатия грид обновляется без перезагрузки страницы: компонент пересобирает конфигурацию и сразу показывает результат. Запечённая конфигурация (parsed) при этом сбрасывается, а перенарезка не нужна — вёрстку вы не меняли, только состав секций ресурса.
При «Дополнить» и «Перезаписать» вместе с секциями копируются и их переводы — лексикон-ключи добавленных секций переносятся из файла типа в файл ресурса.
Откуда берётся «тип» (донор)
Секции копируются из ресурса-типа — это ресурс-донор, дочерний к «Типам страниц» и привязанный к тому же шаблону, что и текущая страница. Если для шаблона такого ресурса-типа нет, компонент сообщит об ошибке.
Это часть общего каскада наследования компонента: «Типы страниц» → тип страницы → ресурс. Кнопки копирования просто переносят секции с уровня типа на уровень конкретной страницы, чтобы дальше править их независимо. Подробнее об уровнях — в разделе Статические секции → Уровни наследования.
Подводные камни
- Двум секциям с одним
data-mpc-sectionнужен разныйdata-mpc-lexicon. Иначе при сохранении страницы они склеятся в одну (вторая перепишет первую). Для копии всегда задавайте свой префикс переводов. - «Перезаписать» и «Очистить» необратимы. Они удаляют правки секций, сделанные в ресурсе. Если нужно лишь добрать недостающие секции, пользуйтесь «Дополнить».
- Структурные изменения вёрстки требуют перенарезки. Кнопки копирования и копии
data-mpc-copyработают с уже нарезанными секциями. Если вы добавили, удалили или переименовали секции/чанки в шаблоне — выполните нарезку, иначе копия будет ссылаться на несуществующий файл.
