Плейсхолдеры изображений
Функция "Плейсхолдеры изображений" — это мощный инструмент, который позволяет выводить изображения из галереи напрямую в контенте или шаблоне ресурса, не вызывая сниппет.
Специальный плагин один раз подготавливает все данные и делает их доступными в виде простых плейсхолдеров, таких как [[+g3x.0]] или [[+g3x.1.url]].
Как это работает
При загрузке страницы на сайте плагин, работающий на событии OnLoadWebDocument, выполняет следующие действия:
-
Проверяет, включена ли эта функция в системных настройках.
-
Если да, он находит все активные изображения для текущего ресурса, сортируя их по полю
position. -
Для каждого найденного изображения создается набор плейсхолдеров, которые MODX может использовать при обработке страницы.
Системные настройки
Для управления этой функцией используются четыре системные настройки в пространстве имен gallery3x.
1. Включить плейсхолдеры на сайте
-
Ключ:
gallery3x.set_placeholders -
Описание: Главный "рубильник". Установите в "Да", чтобы активировать функцию. По умолчанию выключено, так как создает дополнительный запрос к базе данных на каждой странице. Включайте, только если вы действительно используете плейсхолдеры в шаблонах или контенте.
2. Чанк для плейсхолдеров
-
Ключ:
gallery3x.placeholders_tpl -
Описание: Имя чанка, который будет использоваться для оформления плейсхолдера вида
[[+g3x.N]]. Если эта настройка пуста, то[[+g3x.0]]просто выведет массив данных картинки. Если указан чанк, его содержимое будет обработано с данными картинки. -
Пример значения:
tpl.Gallery3x.placeholderItem
3. Включить для шаблонов
-
Ключ:
gallery3x.placeholders_for_templates -
Описание: Список ID шаблонов через запятую, для которых будет работать эта функция. Это позволяет включать плейсхолдеры только для нужных разделов, например, для карточек товаров или статей в блоге, экономя ресурсы на остальных страницах.
-
Пример значения:
3, 8, 12 -
Примечание: Если поле пустое, функция будет работать для всех шаблонов.
4. Размеры превью для плейсхолдеров
-
Ключ:
gallery3x.placeholders_thumbs -
Описание: Список размеров превью через запятую, которые нужно сделать доступными в плейсхолдерах. Это полезная оптимизация, которая не позволяет загружать лишние данные.
-
Пример значения:
small,medium
Примеры использования
Предположим, вы загрузили в галерею 3 картинки.
1. Простой вывод
Вы можете вставить эти плейсхолдеры прямо в контент ресурса или в его шаблон:
-
[[+g3x.0.url]]— выведет URL оригинала первой картинки. -
[[+g3x.0.medium]]— выведет URL превью размераmediumпервой картинки. -
[[+g3x.1.alt]]— выведетaltтекст второй картинки. -
[[+g3x.2.name]]— выведет название третьей картинки.
2. Вывод с форматированием (через чанк)
Это основной способ использования.
-
Создайте чанк, например,
tpl.Gallery3x.placeholderItemсо следующим кодом:HTML<a href="[[+url]]" class="image-link"> <img src="[[+medium]]" alt="[[+alt]]" title="[[+name]]"> </a> -
В системной настройке
gallery3x.placeholders_tplукажите имя этого чанка:tpl.Gallery3x.placeholderItem. -
Теперь вы можете вставлять в контент просто
[[+g3x.0]],[[+g3x.1]]и т.д., и они будут автоматически обернуты в HTML из вашего чанка.
3. Продвинутое использование (с Fenom)
Если на сайте используется Fenom, вы можете легко перебрать все изображения в цикле прямо в шаблоне:
{if $_modx->resource.g3x.0}
<div class="product-gallery">
<div class="main-image">
<img src="{$_modx->resource['g3x.0.medium']}" alt="{$_modx->resource['g3x.0.alt']}">
</div>
<div class="thumbnails">
{for $i = 0 to 10}
{if $_modx->resource["g3x.{$i}.small"]}
<img src="{$_modx->resource["g3x.{$i}.small"]}" alt="">
{/if}
{/for}
</div>
</div>
{/if}