
Архитектура mxQuickView
Обзор компонентов
- Сниппет инициализации:
mxQuickView.initializeПодключает CSS/JS, публикуетwindow.mxqvConfig, подготавливает режимы модалкиnative/bootstrap/fancybox. - Frontend JS:
assets/components/mxquickview/js/mxqv.min.jsДелегирование событий, AJAX-запросы к connector, отрисовка modal/selector, loop-навигация, ms3Variants-хелперы. - Коннектор:
assets/components/mxquickview/connector.phpЕдиная HTTP-точка входа для actionrender. - Процессор:
core/components/mxquickview/src/Processors/Render.phpПроверка whitelist, доступов к ресурсу, рендерchunk|snippet|template. - Базовый чанк товара:
core/components/mxquickview/elements/chunks/mxqv_product.tplРазметка карточки для quick view с формой корзины и блоком вариантов.
Поток данных (высокоуровнево)
- Пользователь кликает/наводит на элемент с
data-mxqv-*. mxqv.jsформирует POST-запрос вconnector.php(mode,data_action,element,id,context,output,modal_library).- Коннектор валидирует HTTP-метод и
action=render, затем вызываетRender::run(...). - Процессор:
- проверяет
id,element,data_action; - загружает ресурс и проверяет право просмотра;
- валидирует элемент по whitelist;
- рендерит HTML через
getChunkилиrunSnippet.
- проверяет
- Коннектор возвращает JSON
{success, html|message}. - JS вставляет HTML в выбранную модалку (
native/bootstrap/fancybox) или в указанный selector-контейнер.
Плейсхолдеры рендера
В рендер передаются:
- поля ресурса (
$resource->toArray()); contentресурса;assets_url;- при MiniShop3: поля
msProductData; - при ms3Variants:
has_variants,variants_html,variants_json.
Безопасность
- Коннектор обрабатывает только
POST. - Проверяется наличие ресурса (
id,deleted=0) и правоview/load. - Для
chunkиsnippetwhitelist обязателен. - Для
templatewhitelist обязателен; пустойmxquickview_allowed_templateблокирует template-рендер.
Хранилище данных
Компонент не создаёт собственные таблицы БД для quick view-логики: использует ресурсы MODX и (опционально) модели MiniShop3/ms3Variants.
Файлы и роли
| Файл | Роль |
|---|---|
assets/components/mxquickview/connector.php | Входная точка AJAX |
core/components/mxquickview/src/Processors/Render.php | Бизнес-логика рендера |
core/components/mxquickview/elements/snippets/mxqv_initialize.php | Подключение фронта и разметки модалки |
assets/components/mxquickview/js/mxqv.min.js | Поведение на клиенте (минифицирован) |
assets/components/mxquickview/css/mxqv.min.css | Стили модалки и карточки (минифицирован) |
