Skip to content
  1. Компоненты
  2. MigxPageConfigurator
  3. Работа со сниппетами

Работа со сниппетами ​

Пресеты ​

Если вы регулярно создаёте сайты на Modx Revolution, то могли заметить, что часто приходится использовать одни и те же сниппеты с одинаковым набором параметров. Я решил, что удобно было бы вынести эти наборы параметров в файлы и брать оттуда по ключу. Собственно файл с набором параметров сниппета я и называю пресетом. Имя файла формируется из названия сниппета в нижнем регистре и окончания .inc.php. Пример пресета pdoresources.inc.php

php
return [
  'services' => [
    'parents' => 10,
    'includeTVs' => 'img',
    'tvPrefix' => '',
    'limit' => 0,
    'tpl' => '@FILE chunks/pdoresources/services/item.tpl',
  ]
];

Разметка ​

Для разметки сниппета используются такие атрибуты как:

  • data-mpc-snippet - указывает на то какой сниппет нужно вызвать и как (кешированным или нет), через | указывается ключ списка настроек из пресета.

  • data-mpc-symbol - используется, если нужно вызвать сниппет ещё при предварительном парсинге страницы, а не в момент запроса с фронта, в качестве значения принимает {, чтобы IDE корректно подсвечивала синтаксис в шаблоне можно поставить пробел.

  • data-mpc-chunk - содержит путь к файлу, в который будет помещён код чанка, указывается относительно папки core/chunks

    Пример простой разметки можно увидеть дальше

fenom
<div data-mpc-chunk="pdoresources/services/item.tpl" class="col-md-4 sppb-col-md-4">
  <div id="sppb-addon-1507906826100" class="clearfix">
    <div class="sppb-addon sppb-addon-module ">
      <div class="sppb-addon-content">
        <div class="custom">
          <h3 class="sppb-feature-box-title">{$menutitle?:$pagetitle}</h3>
          <a href="{$uri}"><img src="{$img}" alt=""/></a>
          <p>{$introtext}</p>
          <a href="{$uri}" class="sppb-btn sppb-btn-default sppb-btn-rounded">Подробнее</a>
        </div>
      </div>
    </div>
  </div>
</div>

Как видите, плейсхолдеры внутри чанка вы должны расставить самостоятельно. Давайте рассмотрим пример посложнее. Вывод меню с помощью сниппета pdoMenu. Принципиальное отличие этого сниппета от pdoResources в том, что у pdoMenu есть вложенные чанки. Поэтому чтобы всё корректно собралось, нужно добавить вложенным чанкам атрибут data-mpc-remove со значением 1, который покажет скрипту, что после получения информации, чанки надо удалить и другого чанка. Вот так это будет выглядеть.

fenom
<div data-mpc-unwrap="1" data-mpc-snippet="pdoMenu|main" data-mpc-symbol="{ ">
  <ul data-mpc-chunk="pdomenu/main/tplOuter.tpl" class="sp-megamenu-parent menu-slide-down hidden-sm hidden-xs">
    {$wrapper}
    <li class="sp-menu-item {$classnames}" data-mpc-remove="1" data-mpc-chunk="pdomenu/main/tpl.tpl">
      <a href="{$link}">{$link_attributes} {$menutitle}</a>
    </li>
    <li data-mpc-remove="1" data-mpc-chunk="pdomenu/main/tplParentRow.tpl" class="sp-menu-item sp-has-child {$classnames}">
      <a href="{$link}">{$link_attributes} {$menutitle}</a>
      <div class="sp-dropdown sp-dropdown-main sp-menu-right" style="width: 240px;">
        <div class="sp-dropdown-inner">
          {$wrapper}
          <ul data-mpc-remove="1" data-mpc-chunk="pdomenu/main/tplInner.tpl" class="sp-dropdown-items">
            {$wrapper}
          </ul>
        </div>
      </div>
    </li>
  </ul>
</div>