Как добавить видео в галерею Fotorama на MODX: значок на первом кадре

    Владельцы интернет-магазинов на MODX с компонентом miniShop2 часто используют галерею msGallery на базе Fotorama. Стандартно все изображения открываются в полноэкранном режиме. Однако возникает задача: сделать первый кадр видеообложкой, при клике на которую запускается попап с видео (например, YouTube или Vimeo), а остальные изображения остаются без изменений. В этой статье разберём, как это реализовать без взлома ядра Fotorama, с помощью небольшой доработки чанка и JavaScript.

    Особенности галереи Fotorama в MODX

    Галерея Fotorama в msGallery выводит изображения через чанк, который генерирует ссылки на полноразмерные картинки. Каждый файл - это <a href="{$file['url']}" target="_blank">. Для добавления видео нужно модифицировать вывод первого элемента так, чтобы вместо ссылки на изображение появилась ссылка на видео, а в миниатюре отображалась обложка со значком плеера.

    Пошаговая инструкция: как изменить первый кадр

    Шаг 1. Редактирование чанка msGallery

    Откройте чанк msGallery (или ваш аналог). Найдите цикл {foreach $files as $file}. Внутри цикла добавьте проверку на первый элемент с помощью {$file@first}. Если это первый файл, выводите специальную разметку для видео, иначе - стандартную ссылку. Пример кода:

    {if $file@first}
        <a href="https://www.youtube.com/embed/ВАШ_ID" class="popup-video" data-fancybox>
            <img src="{$file['url'] | phpthumbon : 'w=100&h=100&zc=1'}" alt="Видеообзор">
        </a>
    {else}
        <a href="{$file['url']}" target="_blank">
            <img src="{$file['url'] | phpthumbon : 'w=100&h=100&zc=1'}" alt="Фото товара">
        </a>
    {/if}

    В этом коде мы используем класс popup-video и атрибут data-fancybox для последующей инициализации всплывающего окна через Fancybox или аналогичную библиотеку.

    Шаг 2. Подключение JavaScript для попапа

    Чтобы при клике на первый кадр открывалось видео, а не изображение, подключите на странице библиотеку для модальных окон (например, Fancybox или Magnific Popup). Инициализируйте её для элементов с классом popup-video. Пример на jQuery:

    $(document).ready(function() {
        $('.popup-video').fancybox({
            type: 'iframe',
            iframe: {
                preload: false
            }
        });
    });

    Если вы используете Fotorama, отключите стандартное поведение для первого кадра: добавьте к ссылке data-fotorama="false", чтобы Fotorama не перехватывала клик.

    Шаг 3. Добавление значка проигрывателя

    Чтобы на миниатюре первого кадра отображался значок play, используйте CSS. Добавьте на сайт следующий стиль:

    .popup-video {
        position: relative;
        display: inline-block;
    }
    .popup-video::after {
        content: '';
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 48px;
        height: 48px;
        background: url('/path/to/play-icon.png') no-repeat center;
        background-size: contain;
        pointer-events: none;
    }

    Убедитесь, что путь к иконке указан верно. Иконку можно скачать или использовать SVG.

    Частые вопросы по настройке

    Многие разработчики сталкиваются с тем, что Fotorama не даёт гибко управлять отдельными кадрами. Решение - не править саму библиотеку, а изменить чанк вывода. Если вам нужно сохранить все стандартные функции (свайп, авто-воспроизведение), просто добавьте условие для первого элемента. Второй способ - использовать data-attributes для обхода стандартного поведения, но это сложнее и менее надёжно.

    Заключение

    Мы разобрали, как интегрировать видео в галерею Fotorama на MODX, заменив первый кадр на обложку со значком проигрывателя. Главное - отредактировать чанк msGallery, добавив условие на первый элемент, и подключить JavaScript для открытия видео в попапе. Такой подход не ломает остальные изображения и легко поддерживается.

    Часто задаваемые вопросы