
ms3ProductSets
Динамические подборки товаров для MiniShop3. Ручные связи, авто-рекомендации, админка шаблонов
- MODX 3
- PHP 8.1
- miniShop3


Пользовательские сценарии в manager: interface/flows.
Серверный вывод сниппетом:
AJAX-отрисовка с сайта:
[[!ms3ProductSets? ... ]], Fenom {'ms3ProductSets' | snippet : [ ... ]}.type, max_items, resource_id, category_id, …).msps_get_products_by_type.'' или emptyTpl.return=ids возвращает CSV ID;msProducts и отрисовывает карточки.tplWrapper оборачивает итоговый HTML.toPlaceholder складывает результат в placeholder.window.ms3ProductSets.render('#selector', options).action=get_set в connector.php.ms3ProductSets с параметрами из POST.data-add-to-cart или «Добавить весь набор» (data-add-set).window.ms3Config.actionUrl, запрос идёт в MiniShop3 Web API: POST на api.php?route=/api/v1/cart/add с JSON { id, count, options } и credentials: 'same-origin'.action=add_to_cart. Сервис ms3, токен из cookie ms3_token, вызов Cart::add().msps:cart:update. При ответе API ещё ms3:cart:updated с detail.data для обновления карточек MS3.save_template.MSPS_ADMIN_TEMPLATE_TYPES), непустой список существующих msProduct.msps_save_template делает INSERT/UPDATE в ms3_product_set_templates. При переименовании шаблона обновляет template_name и type в уже применённых связях.msps_bump_cache_generation, UI перезагружает список.apply_template (template_id, parent_id/parent_ids, replace).msProduct.ms3_product_sets.applied: число строк, реально добавленных через INSERT IGNORE (без учёта дублей и self-link).unbind_template.type и name шаблона.type + template_name.data-add-set (в tplSetVIP или tplSetWrapper)..msps__vip-set, .msps__wrapper или [data-set-type]).data-msps-product-ids (VIP/wrapper), затем [data-product-id] / [data-add-to-cart], затем скрытые input[name="id"].addToCart(productId, 1) для каждого ID.set_added / ошибку и вызывает событие msps:cart:update с product_ids.OnDocFormSave.msProduct.template_name для этого типа. Связи из шаблонов сохраняются.template_name), вставляются новые ID из TV (с валидацией msProduct).msps_bump_cache_generation.