
ms3ProductSets
Dynamic product recommendations for MiniShop3. Manual links, auto rules, manager templates
- MODX 3
- PHP 8.1
- miniShop3


Manager walkthroughs: manager scenarios.
Server-side snippet output:
AJAX render from the storefront:
[[!ms3ProductSets? ... ]], Fenom {'ms3ProductSets' | snippet : [ ... ]}.type, max_items, resource_id, category_id, …).msps_get_products_by_type.'' or emptyTpl.return=ids returns CSV of IDsmsProducts and renders cardstplWrapper, wraps the final HTML.toPlaceholder, stores output in a placeholder.window.ms3ProductSets.render('#selector', options).action=get_set to connector.php.ms3ProductSets with POST params.tplSetItem uses a MiniShop3 form (ms3_form), not data-add-to-cart.productsets.js first POSTs MiniShop3 Web API (ms3Config.actionUrl, route /api/v1/cart/add) when that URL exists.action=add_to_cart → $ms3->cart->add(). There is no msCartAdd call.{success, added, message}.ms3:cart:updated. Toast + msps:cart:update.save_template.name and related_product_ids.msps_save_template INSERT/UPDATE in ms3_product_set_templates.apply_template (template_id, parent_id/parent_ids, replace).msProduct resources.ms3_product_sets.applied (number of inserted links).unbind_template.type and name.type + template_name.data-add-set (in tplSetVIP or tplSetWrapper)..msps__vip-set, .msps__wrapper or [data-set-type]).data-msps-product-ids, then cards, then input[name="id"].addToCart(productId, 1) for each ID in order.set_added and dispatches msps:cart:update with product_ids.OnDocFormSave runs.template_name (from TV) are removed. Template-based links keep template_name.template_name (TV rows) are rewritten. Template links stay.