
mxQuickView
Быстрый просмотр карточки товара и любых ресурсов по AJAX для MODX 3
- MODX 3
- PHP 8.1
- miniShop3


Для native/bootstrap модалка открывается сразу (состояние загрузки), затем уходит POST в connector.php (action=render, включая modal_library).
Для fancybox сначала POST, затем Fancybox открывается уже с полученным HTML.
Библиотека проверяется дважды, при инициализации и при каждом открытии. Если API запрошенной библиотеки недоступен, компонент молча откатывается на native и пишет предупреждение в консоль: Bootstrap mode requested, but bootstrap.Modal is unavailable. Fallback to native.
При успехе HTML вставляется в контейнер выбранного режима:
native → #mxqv-modal-body .qv-modal__content-areabootstrap → #mxqv-bootstrap-modal-body .qv-modal__content-areafancybox → текущий слайд FancyboxПосле вставки публикуется mxqv:loaded.
data-mxqv-mouseover.mouseoverDelay из window.mxqvConfig.render. Список loop не собирается: prev/next и ←/→ с data-mxqv-mouseover не работают.selector (без встроенной модалки) data-mxqv-mode="selector" и data-mxqv-output.html или сообщение об ошибке.data-mxqv-parent data-mxqv-loop="true".[data-mxqv-nav="prev|next"] рисует только разметка native и bootstrap, в fancybox их нет и updateNavButtons() не выполняется. На границах списка кнопки скрываются.native. В bootstrap и fancybox окно закрывает сама библиотека.data-ms3-form, ms3_action=cart/add).ms3.cartUI.init/reinit, ms3.quantityUI.reinit/init, ms3.productCardUI.reinit() (если API MiniShop3 на странице).ms3:cart:updated с detail: { source: 'mxqv' }.Render для ресурса, у которого есть запись msProduct, подставляет has_variants, variants_html и variants_json (если установлен ms3Variants).variants_json попадает в data-mxqv-variants-json. В поставляемом чанке mxqv_product это Fenom-фильтр {$variants_json|escape:'html'}. Свой MODX-чанк экранирует тот же плейсхолдер фильтром :htmlent, например [[+variants_json:htmlent]]..qv-product[data-mxqv-variants] и обрабатывает только флаг true|1|yes|on.click по [data-variant-id] и change на select/input в .qv-product__variants.initVariantsInContent) вызывается при вставке в modal и в mode=selector.{success:false, message, html:''}.modal сообщение показывается в содержимом модалки.selector сообщение вставляется в целевой контейнер.