Skip to content
  1. Extras
  2. ms3ProductSets
  3. For developers

API and interfaces

Snippet ms3ProductSets

Minimal call

modx
[[!ms3ProductSets?
  &type=`buy_together`
  &resource_id=`[[*id]]`
]]
fenom
{'!ms3ProductSets' | snippet : [
  'type' => 'buy_together',
  'resource_id' => $_modx->resource.id
]}

Main parameters

ParameterDefaultDescription
typebuy_togetherSet type
resource_id / productIdcurrent resourceBase product
max_itemsms3productsets.max_itemsLimit 1..100
category_id0Category for auto mode
set_id0VIP set number (for type=vip). 0 or omitted uses 1 — setting ms3productsets.vip_set_1
tpltplSetItemCard chunk
emptyTpltplSetEmptyEmpty result chunk
hideIfEmptytruetrue → empty string, false → output emptyTpl. Strings "false", "0", "true", "1" handled
exclude_ids''Excluded IDs (string or array)
tplWrapper''Wrapper (receives output, type, count)
sortby''Sort field (passed to msProducts). Omitted — order from set
sortdirASCSort direction (only when sortby set)
showUnpublishedfalsePassed to msProducts
showHiddenfalsePassed to msProducts
showLogfalsePassed to msProducts (debug log in manager context)
tvPrefix''TV placeholder prefix (passed to msProducts)
includeTVs''Comma-separated TV list (passed to msProducts)
includeThumbs''Comma-separated thumb sizes (passed to msProducts)
returndatadata, ids, json
toPlaceholder''Write to placeholder

Snippet result also depends on ms3productsets.cache_lifetime and ms3productsets.auto_recommendation. Same for AJAX action=get_set — connector runs the snippet. See System settings.

All types and fallback logic: Set types.

Snippet mspsLexiconScript

Exports:

  • window.mspsLexicon
  • window.mspsConfig (maxItems, lang)

Include before productsets.js.

Connector assets/components/ms3productsets/connector.php

Front (web)

actionMethodParametersResponse
get_setPOSTtype, resource_id, category_id, set_id, max_items, tpl, emptyTpl, hideIfEmptyHTML
add_to_cartPOSTproduct_id, countJSON {success,message}

Manager (mgr, auth required)

actionPurposeMain parameters
get_templatesList set templates
save_templateCreate/update templateid, name, type, related_product_ids, description, sortorder
delete_templateDelete templateid
apply_templateApply template to categories/productstemplate_id, parent_id or parent_ids[], product_ids (optional), replace
unbind_templateUnbind template from categorytemplate_id, parent_id or parent_ids[]
get_resource_treeCategory tree (no products)parent_id, context_key
get_resourcesProduct list for pickerparent_id, template_id, query, limit

JS API (window.ms3ProductSets)

MethodPurpose
render(selector, options)Render block via action=get_set
addToCart(productId, count)Add product to cart via action=add_to_cart
addAllToCart(buttonOrContainer)Add whole set to cart. Accepts DOM element (button with data-add-set or container) or CSS selector. Finds [data-product-id] and [data-add-to-cart], calls addToCart for each ID, then toast and event msps:cart:update.
toast(message)Show frontend notification

Events after successful add:

  • addToCart: msps:cart:update with detail: { product_id, count }
  • addAllToCart: msps:cart:update with detail: { product_ids }