webx-ui / module-catalog
A product catalogue for the WebX UI admin panel: products, a tree of categories, prices, a gallery and the registries its satellite modules plug into.
Requires
- php: ^8.4
- illuminate/auth: ^13.0
- illuminate/bus: ^13.0
- illuminate/contracts: ^13.0
- illuminate/database: ^13.0
- illuminate/filesystem: ^13.0
- illuminate/http: ^13.0
- illuminate/routing: ^13.0
- illuminate/support: ^13.0
- illuminate/validation: ^13.0
- illuminate/view: ^13.0
- openspout/openspout: ^4.32
- webx-ui/cache: ^0.84.0
- webx-ui/localization: ^0.84.0
- webx-ui/mcp: ^0.84.0
- webx-ui/module-admin: ^0.84.0
- webx-ui/module-media: ^0.84.0
- webx-ui/module-seo: ^0.84.0
- webx-ui/nested-set: ^0.84.0
- webx-ui/routing: ^0.84.0
- webx-ui/widgets: ^0.84.0
Requires (Dev)
- orchestra/testbench: ^11.0
- phpunit/phpunit: ^12.0 || ^13.0
- webx-ui/module-audit: ^0.84.0
Suggests
- webx-ui/module-audit: The site audit reports published categories without a description and published products without a picture or a price.
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v0.84.0
- v0.83.0
- v0.82.0
- v0.81.0
- v0.80.0
- v0.79.1
- v0.79.0
- v0.78.0
- v0.77.0
- v0.76.0
- v0.75.0
- v0.74.0
- v0.73.0
- v0.72.0
- v0.71.0
- v0.70.0
- v0.69.0
- v0.68.0
- v0.67.0
- v0.66.0
- v0.65.0
- v0.64.0
- v0.63.0
- v0.62.1
- v0.62.0
- v0.61.1
- v0.61.0
- v0.60.0
- v0.59.0
- v0.58.0
- v0.57.0
- v0.56.0
- v0.55.0
- v0.54.0
- v0.53.1
- v0.53.0
- v0.52.0
- v0.51.0
- v0.50.0
This package is auto-updated.
Last update: 2026-10-21 16:30:45 UTC
README
The core of a product catalogue as a section of the WebX UI admin panel: products, a tree of categories, prices, a gallery, three product states and a bin — and the registries its satellite modules (properties, stock, brands, labels…) plug into.
The address is webx-ui/routing, the tree is webx-ui/nested-set, the journal and the screens are
webx-ui/module-admin, what a page says about itself is webx-ui/module-seo, the previews are
webx-ui/module-media, the languages are webx-ui/localization, and the videos of the gallery
play on the product page through webx-ui/widgets, behind the visitor's consent.
Requirements
- PHP 8.4+, Laravel 13
webx-ui/module-admin,webx-ui/module-media,webx-ui/module-seo,webx-ui/routing,webx-ui/nested-set,webx-ui/localization,webx-ui/widgets
Install
composer require webx-ui/module-catalog php artisan migrate
Permissions: catalog.view, catalog.manage, catalog.delete.
Addresses
Both at the root of the site:
| What | Address | Notes |
|---|---|---|
| category | /{slug} |
flat at any depth; a slug taken by a page or a category is a 422 |
| product | /{slug}-{id} |
any other spelling of the slug answers 301 to this one; the slug need not be unique |
A product is published, unpublished or deleted. Published and in at least one visible
category — the full page. Unpublished, or published in no visible category — a trimmed page, 200
with noindex. Deleted — 301 to its main category (or a visible additional one), 410 when there is
none. A deleted category answers 410. An unpublished category hides everything below it.
Views
product and product-unavailable, overridden by a site in
resources/views/vendor/webx-catalog/. webx-catalog.layout names the site's layout component.
With an empty SEO card a product names its page itself (HasSeoFallback): the name through the
site's title template, the summary (or the description, cut short) as the description, the main
picture as og:image, above the site's default social image. A page of a list (CatalogPage) is
called by its heading, and on the plain page the category's description and cover come with it.
So no view prints <title> itself, and a site's copy that still has the old
@if ($meta->title === null) block can delete it.
Satellites
A satellite writes its share of the product form through a ProductPart registered with
ProductParts::register(); its fields on the screen catalog.product-form are named
<part key>.<field>. The form saves the core and every part in one transaction, with one journal
row.
Documentation
The spec: docs/architecture/WEBX_UI_MODULE_CATALOG.md in the monorepo.