
Потоки (flows)
1. Рендер в модалке по клику
- Клик по элементу с
data-mxqv-click. - JS читает
mode,data_action,element,id,title. - Для
native/bootstrapмодалка открывается сразу (loading-состояние), затем отправляется POST вconnector.php(action=render, включаяmodal_library). - Для
fancyboxсначала выполняется POST, затем открывается Fancybox уже с полученным HTML. - При успехе HTML вставляется в контейнер выбранного режима:
native->#mxqv-modal-body .qv-modal__content-area;bootstrap->#mxqv-bootstrap-modal-body .qv-modal__content-area;fancybox-> текущий slide Fancybox.
- После вставки диспатчится
mxqv:loaded.
2. Рендер по наведению (mouseover)
- Наведение на элемент с
data-mxqv-mouseover. - Запускается таймер
mouseoverDelayизwindow.mxqvConfig. - Если курсор не ушёл до истечения таймера, выполняется тот же
render-запрос. - Если курсор ушёл раньше, таймер отменяется.
3. Режим selector (без встроенной модалки)
- На триггере задано
data-mxqv-mode="selector"иdata-mxqv-output. - JS вставляет loading-индикатор в целевой контейнер.
- После ответа заменяет контейнер на
htmlили сообщение об ошибке.
4. Навигация prev/next в списке
- Триггер находится внутри контейнера
data-mxqv-parent data-mxqv-loop="true". - JS формирует список триггеров внутри контейнера.
- Кнопки
[data-mxqv-nav="prev|next"]переключают текущий индекс. - При достижении границ списка кнопки скрываются.
5. Добавление в корзину из quick view
- В рендере используется форма MiniShop3 (
data-ms3-form,ms3_action=cart/add). - После подстановки HTML вызывается
ms3.productCardUI.reinit()(если доступен). - Добавление в корзину работает без перезагрузки страницы.
6. ms3Variants внутри quick view
- Процессор для
msProductподставляетhas_variants,variants_htmlиvariants_json(если ms3Variants установлен). - В чанке
variants_jsonвставляется вdata-mxqv-variants-jsonчерез:htmlent. - JS ищет
.qv-product[data-mxqv-variants]и обрабатывает только флагtrue|1|yes|on. - JS слушает
clickпо[data-variant-id]иchangeнаselect/inputв.qv-product__variants. - При выборе варианта обновляет цену, old price и изображение.
7. Поток ошибок
- При ошибке валидации коннектор возвращает
{success:false, message, html:''}. - В
modal-режиме сообщение отображается в контенте модалки. - В
selector-режиме сообщение вставляется в целевой контейнер.
