OpenCart conditional options

Ask the question only when it applies

A customer picks a wooden frame and the stain options appear. They pick aluminium and the stain disappears. They pick a motherboard and the memory sizes it will not take vanish from the list. It happens as they click, with no page reload, and the same rules are enforced on the server when they add to the cart. The hiding is a courtesy; the server check is the mechanism.

Get it on the marketplace Read the documentation

The Configurator tab on a product's edit form, carrying three rules under a yellow warning that reads Rule 3: cannot fire while the Wood stain value Ebony is sold out. Rule 1 reads WHEN Frame material is Aluminium THEN hide the option Wood stain; Rule 2 reads WHEN Frame material is Aluminium THEN hide the value Brass of Handle finish; Rule 3 reads WHEN Wood stain is Ebony THEN hide the value Brushed steel of Handle finish. Each line is a row of dropdowns, with a plus button to add a condition and an Add Rule button underneath, and below that a Copy rules from product field with a Replace with that product's rules button.
The whole authoring interface: a tab on the product form you already had open, saved by that form's own Save. The second rule is the one most configurators charge for: it takes away a single value, Brass, and leaves the rest of the Handle finish option in place, so a compatibility list keeps its other entries. What is written here is also what the server enforces; there is no second place to keep the two in step.
The Aldbury Writing Desk on the storefront, mid-configuration. Frame material is drawn as two swatch tiles, Oak and Aluminium, with Aluminium picked and outlined. Beneath it Handle finish offers Brushed steel alone, and the Wood stain option that was there a moment ago is gone.
The same two rules, from the customer's side, on the product page the store's own theme draws, with no template edit and no second layout. Wood stain has gone, Brass has gone from Handle finish, and the frame values are swatches because OpenCart already held an image on each of them. Nothing was uploaded to get that.

A rule is one sentence, and you can read it back

WHEN Frame material is Aluminium THEN hide the option Wood stain: a row of dropdowns, joined with AND, as many conditions on one rule as you need. Where you need an or, write two rules with the same target. The three verbs are show, hide and require, and naming an option in a show rule is what makes it hidden until the configuration calls for it.

Enforced on the server, in OpenCart’s own words

The hiding is the convenience. The mechanism is OpenCart’s own option validation, which the rules are applied to on the storefront, through its API and in the admin order editor alike, so a stale page, a hand-built form or a second tab cannot buy a combination you do not sell. The refusal message is OpenCart’s, not ours.

It builds on OpenCart’s options rather than replacing them

Every answer your customer gives is an ordinary OpenCart option answer. The price a value adds, the stock it holds, and the way the choice prints on the order page, the invoice and the order emails all keep working, because none of them were changed. There is no second store of option data and nothing of ours against an order.

Written where the product already is, with no theme edit

A Configurator tab on OpenCart’s own product form, saved by that form’s own Save button. There is no second screen and no second save, and a rule can name an option you added to the form a second ago and have not saved yet. On the storefront it rides the page your theme already renders. Copying a product copies its rules; deleting one deletes them.

Translation published, not claimed

Which of our strings a named native speaker has actually read is published per extension and per language, and anything unreviewed ships as English rather than as a blank or a raw identifier.

Everything it refuses to do sits on one page. Limits and guarantees says that there is no live preview (configuration is a form, with no 2D composite, no 3D view and no artwork to upload), that rules belong to one product and there is no reusable template, so a second product gets its rules by copying the product or by Copy rules from, as a copy and not a link, that nothing here changes a price, since an option value adds the fixed amount OpenCart's own Option tab holds, that hiding controls availability and keeps nothing secret, because every option and value attached to the product is in the page source whether a rule reveals it or not, that a customer with JavaScript off is shown every option (and is still refused the combination when they add to the cart), that rules do not reach cart lines already added and nothing is re-checked at checkout, which is what OpenCart does with its own option validation too, and that a rule leaving a required option with nothing selectable still saves: the Configurator tab warns about the dead ends it can see when the form opens, and stock that runs out after that gets no warning. Worth reading before you buy.

Questions people ask before buying

Can OpenCart product options depend on each other?

Not on their own. Product Configurator adds rules that show, hide or require an option (or a single value of it) as the customer picks, so the stain options appear for a wooden frame and disappear for aluminium.

Is a rule still enforced if somebody bypasses the page?

Yes. The same rules run again on the server when the product is added to the cart, so hiding an option is the courtesy rather than the whole mechanism.

Does it work with OpenCart 4?

Every Kyvero extension is built for OpenCart 4.x. Each one declares the lowest release it will install on and refuses to install below it, and its documentation lists the releases a full install-and-upgrade pass was run against.

Do I get the source code?

Yes. An extension is PHP on your own server: readable, not obfuscated, and with no remote licence check to fail. Your copy is yours to modify and to keep backed up.

Who answers when something goes wrong?

A developer, usually the one who wrote the extension. There are two official routes, the support portal and the support address, and both arrive in the same place.