Skip to content

The settings promise

Every extension we sell writes down every setting it has. This page collects the one fact that only makes sense across all of them at once: where each extension's settings apply, either on one storefront at a time or on the whole install.

It is written for someone rolling a shop out across several storefronts, who has to decide before buying whether an extension can hold a different answer per store. That question is usually answered by installing the extension and looking, or by asking and being told yes. Here it is read off the declaration each extension ships, so the table below gives the same answer the code does.

Where each extension's settings apply

Extension Where its settings apply
Abandoned Cart Recovery Per store and install-wide
Advanced Product Filters Per store and install-wide, with values set per source and facet
B2B Pricing Install-wide
Back In Stock Install-wide, with values set per product and product option value
Delivery Date Per store and install-wide, with values set per product
Gift Cards Install-wide
Import/export Install-wide
Loyalty Per store and install-wide
Pre-Order Install-wide, with values set per product and product option value
Product Bundles Install-wide, with values set per language, product, store, category, filter and customer group
Product Configurator Install-wide, with values set per product, ruleset and rule
Product Feed Install-wide, with values set per store, language and category
Product Search Per store and install-wide, with values set per language and keyword
Profitability Copilot Per store and install-wide
Returns Portal Per store and install-wide
Review Requests Per store and install-wide
SEO Suite Pro Per store and install-wide
Wishlist Per store and install-wide

Each extension's name links to its own settings page, which lists every one of its settings, what each does, what it starts at, and where that individual key applies. This page summarises all of them; that page has the detail.

The three things a cell can say

  • Per store. A multi-store install can hold a different answer per storefront, and both are honoured. A read takes what that store holds, then what the default store holds, then the shipped default. OpenCart does the same with its own settings, which is why a store that has never had its tab saved follows the default store rather than falling back to ours.
  • Install-wide. One thing serves every storefront (one index, one cron tick, one credential, one host, one file on disk), and two answers would contradict each other over it. Where a key is install-wide, its description on the extension's settings page names the one thing it serves, so you do not have to take it on trust.
  • With values set per something. Some extensions carry values that sit on a row rather than on a settings screen: a product, an option value, a language, a customer group. That clause names what those rows are keyed on.

Most rows say two of the three, and that is the complete answer. An extension's status switch and its cron cycle are rarely the same kind of thing as its shopper-facing wording. A cell reading Per store and install-wide means both are true of different keys, and the extension's own settings page says which is which, key by key.

An entity in the last clause is not a scope. Where a cell says install-wide, with values set per … store, it means rows of the extension's own data are limited to a store (which bundle appears on which storefront, for example), while the settings themselves are one set for the install. The two read alike in English but are different facts, so they are kept in different clauses.

What this page does not count

Nothing. There is no number of settings here, no number of refusals, and no score.

This is deliberate. A count would rank an extension with forty half-considered fields above one with six that were argued over, and settings are written down so that the second kind is visible. No other seller on this marketplace publishes such a number, so there would be nothing to compare it against.

The question a count would answer, is this configurable enough for me, is better answered by the extension's settings page. It lists every key with its description, and has a section naming what the extension fixes on purpose and why.

What this page does not promise

  • Not that a setting exists for what you need. Every extension publishes what it refuses to make configurable, with the reason, on its own settings page. That list is part of the answer, and it lets you find a missing setting before you buy rather than after.
  • Not that a per-store answer is free everywhere. A storefront read is: the values arrive with the settings OpenCart already loaded for that store. A scheduled sweep has no storefront, so it works its way through the stores one at a time, and an extension that runs a cron says so on its own pages.
  • Not that your answers survive being uninstalled. An update keeps them: the extension's changelog carries a generated section saying which of its settings come back and which do not. Uninstalling is a different act, and it is meant to remove things.
  • Not that this is every setting your store has. OpenCart's own settings, your theme's and every other vendor's are outside anything we can write down. This page is about ours.

How the table is kept true

The row for an extension is folded out of a declaration in that extension's own source, the same declaration its settings page, its admin form and its upgrade note are built from. There is no second list to keep in step.

make check regenerates this page and fails when the committed copy differs, so a setting that changes where it applies stops the build in front of the person who changed it instead of leaving this page wrong. The same pass refuses an extension that writes a setting it never declared, declares one with no description, or claims a per-store setting on a screen that cannot save one.

The list of extensions is not kept here either. Every extension we ship is on this table by being an extension we ship, rather than by having been added to a list of participating ones. That is what makes the table's edges mean something: an extension cannot ship without declaring where its settings apply, and it cannot declare it and then be left off.