
ms3ProductSets
Dynamic product sets for MiniShop3


[[!ms3ProductSets? ... ]].type, limit, resource_id).msps_get_products_by_type (respects cache_lifetime — cache key type+params — and auto_recommendation).'' or emptyTpl.return=ids returns CSV IDs; otherwise calls msProducts and renders cards.tplWrapper wraps final HTML.toPlaceholder stores result in placeholder.window.ms3ProductSets.render('#selector', options).action=get_set to connector.php.ms3ProductSets with POST params (same cache_lifetime and auto_recommendation).data-add-to-cart.action=add_to_cart with product_id, count.msCartAdd (if miniShop3 available).{success,message}.msps:cart:update on success.save_template.name and related_product_ids.msps_save_template does INSERT/UPDATE in ms3_product_set_templates.apply_template (template_id, parent_id/parent_ids, replace).msProduct.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-product-id] and [data-add-to-cart].addToCart(productId, 1) for each ID in sequence.set_added and dispatches msps:cart:update with detail: { product_ids }.OnDocFormSave runs.template_name (from TV) are removed; template links (with template_name) are kept.