Present for Craft CMS

Troubleshooting

Boxes disappear from the cart

Something is making the bundle unavailable, and Commerce drops an unavailable line item on every recalculation. Check, in order:

  1. The bundle's status is live — a pending post date or a passed expiry date both count
  2. Available for purchase is on
  3. It has a real SKU, not a temporary one
  4. php craft present/bundles/check — the stock rollup may say it cannot be built

"This box cannot be made up right now"

The stock rollup found a component that cannot supply a single box. present/bundles/check names it. If the component should not be limiting anything, it is probably inventory-tracked when you meant it not to be — an untracked component never limits a bundle.

A component's price is wrong in the cart

Check the bundle's pricing mode. Under fixed pricing with the default spread allocation, every component is re-priced to its share of the bundle price, so a component will not show its own price — that is the intended behaviour, and the line totals add up to the bundle price.

A slot discount doesn't seem to apply

Check whether the option has its own discount. An option-level 0 is an explicit "no discount on this one" and overrides the slot's; leaving it empty is what makes it inherit.

A bundle's contents show as separate rows in the cart

They are separate rows — that is how stock and fulfilment work. Use craft.present.cartLineItems() and craft.present.isComponent() to group them. See Templating.

The builder doesn't appear

  • Is registerBuilderAssets on, or are you bundling the JS yourself?
  • Does the bundle have at least one slot?
  • Check the console: the builder logs "could not start the box builder" if its payload will not parse.
  • After editing anything under src/web/assets/*/dist, run php craft clear-caches/cp-resources — Craft keeps serving the previously published copy.

The slots editor is missing from the bundle edit screen

What's in the box is a native field. Drag it into the bundle type's field layout.

Pro features aren't working

Check the edition: php craft plugin/list. On Lite, range slots behave as fixed, query pools fall back to their list, item limits are ignored and allocation always spreads. The bundle edit screen says so when a bundle is affected.

A bundle type I deleted is still listed

Only possible if the deletion happened in a bare console script that exited without flushing project config. Run php craft project-config/apply --force, or delete it again through the control panel.

Changes made by a script vanish on the next deploy

A bare PHP script that boots bootstrap/console.php never fires Application::EVENT_AFTER_REQUEST, which is what Craft flushes project config on. The change lands in the database and nowhere else, and the next project-config/apply reverts it from the untouched YAML. Call Craft::$app->getProjectConfig()->flush() before the script exits.

Order totals don't match what the product page showed

They should — both read the same Pricer. If they differ, a component's price changed between the two, and Commerce will have added a "the price of X changed" notice to the order. That is working as intended: prices are recomputed from the stored selection on every recalculation rather than frozen at add-to-cart.