Skip to main content
Version: 3.x

CBX on Joomla — Platform Guide

Version
3.x
Updated
View markdown

Audience: integrators and developers running CBX on Joomla · Scope: what is specific to the Joomla edition — installation, the extensions that ship, storefront wiring, ACL, the Joomla 4/5 wrapper and the CLI · Last reviewed: 2026-07-21

Store admins: the task-oriented manual is the Admin Guide — start with CBX on Joomla, which covers the same ground in plain language. This document is the technical counterpart.

TL;DR — Joomla is CBX's reference host: CBX owns the entire shop (configurator, cart, checkout, orders, customers, email, tax, shipping, payment) and Joomla supplies the site around it — pages, menus, users, template and ACL. Nothing in the general documentation is switched off. The Joomla-specific work is wiring the storefront with menu items, which is also what drives SEF routing.


1. Division of labor — what Joomla owns, what CBX owns

Unlike the Magento edition, almost everything belongs to CBX. This table exists mainly to show how little Joomla is responsible for:

ConcernOwned byNotes
Configurator (pages, questions, answers, rules, calculations, visualization)CBXThe whole configurator reference applies unchanged.
Product lists, product pagesCBXSurfaced through Joomla menu items — see §4.
Cart & checkoutCBXCBX runs its own storefront checkout.
Orders, invoices, manufacturing slipsCBXcbcheckout_* tables; the Orders screen is fully present.
Customers & customer groupsCBX, on top of Joomla identitiesShoppers authenticate as Joomla users; the CBX customer record holds address, group and B2B data. See §6.
Transactional emailCBXThe Notifications screen drives per-status emails; CBX sends them through Joomla's mailer.
Tax, currencies, shipping, paymentCBXAll configured in the CBX menu.
LanguagesJoomla site languages + CBX's own stringsJoomla supplies the language list; CBX translates its content in its own edit screens (EAV #__configbox_strings), not through Joomla language files.
Pages, menus, navigationJoomlaMenu items are how the storefront becomes reachable — §4.
Users, groups, access levels, ACLJoomlaCBX adds its own actions to Joomla's permission system — §5.
Template / look and feelJoomlaCBX views render inside the site template.

2. Installing and updating

CBX ships as a Joomla package (pkg_configbox) installed through System → Install → Extensions. The package installs the component plus the module and plugins listed in §3, and sets blockChildUninstall, so the parts cannot be removed individually.

  • Requirements (enforced by the installer script, which aborts with a readable message): Joomla 3.0 – 6.99, PHP 7.4 – 8.5.99, and the extensions gd, json, mbstring, mysqli among others. The pricing/rule engine ships ionCube-encoded, so the server also needs the ionCube Loader for its PHP version.
  • Updating is a re-install of the package over the existing one (method="upgrade"). The manifest carries an <updateservers> entry but it is commented out, so Joomla's Update component will not offer CBX updates — do not expect one-click updates in System → Update.
  • Database schema and data updates are CBX's own, not Joomla's: versioned scripts under helpers/updates/<version>.php, applied by ConfigboxUpdateHelper::applyUpdates() on init and from the CLI. A failed script sets failed_update_detected and freezes further updates. Full detail: migrations.
  • Licensing is domain-bound; the key is entered in the CBX dashboard.

3. What the package installs

ExtensionTypeJob
CBX (com_configbox)componentThe application itself — site and administrator
System - CBX (plg_system_configbox)system pluginBoots CBX into the request; serves the /cb-api/… XHR endpoint
User - CBX (plg_user_configbox)user pluginKeeps Joomla users and CBX customer records in step
Authentication - CBX (plg_authentication_cbcheckout)authentication pluginLets customers authenticate during checkout
CBX - Console commands (plg_console_configbox)console pluginRegisters the configbox:* CLI commands — §7
CBX Currencies (mod_configboxcurrencies)site moduleOptional currency switcher for a template position

The release is built by tools/make-package.sh; the shipped set is declared by the MODULES / PLUGINS tables at the top of that script and <files> in tools/pkg_configbox.xml — adding an extension means editing both, and nowhere else.

4. Wiring the storefront — menu items and SEF

A CBX view reaches visitors only through a published Joomla menu item. This is the one structural difference from the other hosts (WordPress uses a shortcode; Magento uses the catalog).

The CBX group of the Menu Item Type picker offers: Product List, Product, Configurator Page, Shopping Cart, Customer Account Page, Customer Login Page, Customer Registration Page, Edit Customer Account Page, Order Listing for Shop Managers, Terms and Conditions Page, Refund Policy Page and Custom. There is deliberately no Checkout type — checkout is reached from the cart.

You need far fewer items than it looks. The router resolves a configurator URL by walking from the most specific menu item to the least: an exact configuratorpage item → a parent product item → any productlist item. One Product List item therefore gives every product and configurator step a URL beneath it; per-product items are for deliberate site structure, not a requirement.

Readable paths (/en/demo-products/car/motor.html) come from the SEF Segment field on products and pages, which is translatable and must be unique per language. The full round trip — ConfigboxRouter, the controller SEF hooks, custom-view anchors and the /cb-api/ endpoint — is documented separately in SEF URLs; read that before adding a custom view with its own clean URL.

5. ACL — the actions CBX registers

CBX declares its own actions in access.xml, so they appear in Joomla's System → Global Configuration → CBX → Permissions and per-group permission screens:

ActionMeaning
core.manageManage the component (the backend gate)
core.quickeditShow the frontend quick-edit buttons. Display only — saving still needs backend permission
core.edit_templatesEdit CBX templates
core.edit_connectorsEdit connectors (plugin-like extensions to CBX behavior)
core.see_ordersSee the front-end order listing for shop managers
core.release_invoicesRelease invoices to the customer
core.upload_invoicesUpload and release invoices (with manual release configured)
core.download_invoicesDownload invoices
core.change_invoicesChange invoices
core.edit_ordersEdit orders

The invoice and order actions are for shop staff, not customers — the language strings say so explicitly, and granting them to a public-facing group exposes other people's orders.

6. Identity — Joomla users and CBX customers

Shoppers sign in with their Joomla account; CBX does not run a second login. The user plugin maps the Joomla user to a CBX customer record, and a guest cart is moved onto the account on login rather than discarded. Address, company and VAT data live on the CBX side, not in the Joomla user profile. Guest ordering is available where the configuration allows it.

7. Command line

The configbox:* suite runs on Joomla's console:

php cli/joomla.php configbox:cache:clear
php cli/joomla.php configbox:migrate [--status]
php cli/joomla.php configbox:migrate:unblock
php cli/joomla.php configbox:run-task <controller> [<task>] [key=value ...] [--user=<selector>]
php cli/joomla.php configbox:config:get|config:set|config:list ...
php cli/joomla.php configbox:sysvar:get|sysvar:set|sysvar:list ...

Note the colon-separated names here — the WP-CLI wrapper hyphenates the same commands (wp configbox cache-clear), because WP-CLI subcommands cannot contain colons. --user accepts an e-mail, a CBX user id or platform:<host-user-id>; on WordPress the same option is --cb-user, since WP-CLI reserves --user. migrate --status reports whether work is outstanding without applying anything, so deploy scripts can gate on its exit code.

Commands are classes under the administrator component's src/Console, registered by the console plugin — the plugin must be enabled for php cli/joomla.php list to show them. The real work sits in the platform-agnostic ConfigboxCliHelper shared with the WordPress and Magento wrappers, so behavior matches across hosts. Full reference: CLI commands.

8. The Joomla 4/5 component wrapper

CBX predates Joomla 4's namespaced component model and does not use Joomla MVC. A thin adapter bridges the two:

  • administrator/components/com_configbox/services/provider.php binds ComponentInterface to ConfigboxComponent.
  • ConfigboxComponent delegates dispatch to Joomla's LegacyComponentDispatcher (which runs the existing configbox.php entry files) and returns the existing global ConfigboxRouter.
  • The manifest registers the PSR-4 namespace Joomla\Component\Configbox for the wrapper only. CBX's own Kenedo-based code is intentionally un-namespaced and keeps its own bootstrap.

The stock MVCFactory / ComponentDispatcherFactory / RouterFactory providers are deliberately not registered: CBX uses neither Joomla MVC, nor Joomla categories, nor a RouterView router, so they would have nothing to resolve. Treat the wrapper as a boundary adapter — extend CBX through Kenedo, not by growing this layer.

9. File locations

WhatWhere
Application codecomponents/com_configbox/ (site side — models, views, controllers, helpers, Kenedo)
Admin wrapper, ACL, console commandsadministrator/components/com_configbox/
Customization layercomponents/com_configbox/data/customization
Encoded enginecomponents/com_configbox/helpers/encoded/{13,14,15}/
Logslogs/configbox/

10. Reading map — the general docs from a Joomla seat

Joomla is the reference host, so everything applies: nothing is hidden and no system is owned by the host. Read in this order:

  1. Admin Guide — the operator manual, screenshots taken from a Joomla store, plus the Joomla host article.
  2. functional/ — behavior specs.
  3. technical/ — implementation reference, including migrations and CLI commands.
  4. customization/ — the upgrade-safe customization layer.
  5. SEF URLs — Joomla-only routing detail.

11. Gotchas

  • No Joomla update-server updates. The <updateservers> entry is commented out; updating means installing the package again.
  • The package blocks child uninstall. Remove CBX through the package, not by uninstalling the component or a plugin on its own.
  • A missing menu item silently degrades URLs. Without a matching published item, links fall back to index.php?option=com_configbox&… instead of clean paths — see §4 and the SEF doc.
  • core.quickedit is display-only. It shows the frontend edit buttons; saving still requires backend permissions. Granting it alone does not create an editing role.
  • The console plugin must stay enabled or the CLI commands vanish from joomla.php list.
  • Schema updates run on init. Opening any CBX page after deploying new code applies outstanding migration scripts — take a database snapshot before deploying, not after.
  • CBX's language content is not in Joomla language files. Product, question and answer text lives in #__configbox_strings and is edited in the CBX screens; the .ini files only cover the interface chrome.