Skip to main content

Custom Field Types

J2Commerce provides 43 custom Joomla form field types that extend Joomla's form system. These fields handle everything from entity lookups and product pricing to image uploading and SEF router configuration. Third-party plugins, modules, and extensions can use any of these fields in their XML forms.

Using J2Commerce Fields

All fields live in the J2Commerce\Component\J2commerce\Administrator\Field namespace. Declare addfieldprefix on your form XML:

<form addfieldprefix="J2Commerce\Component\J2commerce\Administrator\Field">
<fieldset name="basic">
<field name="country_id" type="Country" label="Country" />
<field name="zone_id" type="Zone" label="Zone" country_field="country_id" />
</fieldset>
</form>

For plugin manifests:

<config>
<fields name="params" addfieldprefix="J2Commerce\Component\J2commerce\Administrator\Field">
<field name="tax_profile" type="Taxprofile" label="Tax Profile" />
</fields>
</config>

Modal fields use a sub-namespace and require a separate prefix:

<field name="product_id" type="Modal_Product"
addfieldprefix="J2Commerce\Component\J2commerce\Administrator\Field\Modal" />

Entity Lookup Fields

Dropdown fields populated from J2Commerce database tables. All extend ListField.

Field TypeClassTableStored Value
CountryCountryField#__j2commerce_countriesj2commerce_country_id (int)
ZoneZoneField#__j2commerce_zonesj2commerce_zone_id (int)
GeoZoneGeoZoneField#__j2commerce_geozonesj2commerce_geozone_id (int)
CurrenciesCurrenciesField#__j2commerce_currenciescurrency_code (string)
OrderStatusOrderStatusField#__j2commerce_orderstatusesj2commerce_orderstatus_id (int)
TaxprofileTaxprofileField#__j2commerce_taxprofilesj2commerce_taxprofile_id (int)
TaxRateTaxRateField#__j2commerce_taxratesj2commerce_taxrate_id (int)
ManufacturersManufacturersField#__j2commerce_manufacturersj2commerce_manufacturer_id (int)
VendorsVendorsField#__j2commerce_vendorsj2commerce_vendor_id (int)
LengthLengthField#__j2commerce_lengthsj2commerce_length_id (int)
WeightWeightField#__j2commerce_weightsj2commerce_weight_id (int)
StoreProfileStoreProfileField#__j2commerce_storeprofilesj2commerce_storeprofile_id (int)
ManufacturerCountryManufacturerCountryField#__j2commerce_countries (filtered)j2commerce_country_id (int)
VendorCountryVendorCountryField#__j2commerce_countries (filtered)j2commerce_country_id (int)

Product & Pricing Fields

Fields for product configuration, pricing, and commerce settings.

Field TypeClassPurpose
ProductTypeProductTypeFieldProduct type selector (simple, configurable, variable, etc.)
PriceCalculatorPriceCalculatorFieldPricing calculator strategy selector
VariantPriceVariantPriceFieldCurrency-prefixed price input for variants
VariantAdvancedPricingVariantAdvancedPricingFieldButton to open advanced pricing modal
DimensionsDimensionsFieldThree-input group for length/width/height
PaymentMethodsPaymentMethodsFieldInstalled payment plugin selector
ShippingMethodsShippingMethodsFieldInstalled shipping plugin/method selector
InvoicetypeInvoicetypeFieldDocument type selector (invoice, receipt, packing slip)

Modal-based entity selection fields.

Field TypeClassPurpose
Modal_ProductModal\ProductFieldSingle product picker via modal
Modal_ProductMultiselectModal\ProductMultiSelectFieldMulti-product picker via modal

Multi-Select & List Fields

Advanced selection fields with dual-panel or checkbox interfaces.

Field TypeClassPurpose
DuallistboxDuallistboxFieldTwo-panel multi-select listbox
CategoryDuallistboxCategoryDuallistboxFieldDual listbox pre-loaded with Joomla categories
PhoneCountriesPhoneCountriesFieldCountry checkbox grid with dial codes

Template & Layout Fields

Fields for template selection and layout configuration.

Field TypeClassPurpose
SubtemplateSubtemplateFieldVisual card picker for app subtemplates
TemplatelistTemplatelistFieldTemplate folder dropdown with plugin event support
TemplateCustomTemplateCustomFieldDisplay-only shortcode reference panel
Categoryj2commerceCategoryj2commerceFieldBootstrap accordion of category settings panels

Image & File Fields

Fields for image uploading and directory selection.

Field TypeClassPurpose
J2CommerceImageJ2CommerceImageFieldSingle image picker with preview
MultiImageUploaderMultiImageUploaderFieldUppy-powered drag-and-drop multi-image uploader
ImageDirectoryImageDirectoryFieldFolder picker rooted at images/

Router & Menu Fields

Fields for SEF URL routing configuration.

Field TypeClassPurpose
RoutertypeRoutertypeFieldHidden field exposing router type for showon conditions
RouterCategoryRouterCategoryFieldCategory field that auto-switches by router mode
RouterModalCategoryRouterModalCategoryFieldModal/multi-select category field by router mode
ProductlistmenuProductlistmenuFieldMenu item selector for legacy router

Display & Utility Fields

Read-only display fields and UI utilities. These fields render information but store no data.

Field TypeClassPurpose
AlertAlertFieldBootstrap alert box (display only)
ButtonButtonFieldClickable button with onclick handler
PricePriceFieldAlert variant for pricing contexts
CronlasthitCronlasthitFieldCron last execution status display
QueuekeyQueuekeyFieldQueue key display with AJAX regenerate

Key Notes

  • CurrenciesField stores an ISO string (USD), not an integer ID — unique among entity fields.
  • ZoneField supports AJAX country-linking via the country_field attribute.
  • ManufacturerCountry/VendorCountry are filtered variants of CountryField — ideal for filter forms.
  • Router fields work together: RoutertypeField drives showon conditions for RouterCategory, RouterModalCategory, and Productlistmenu.
  • Display fields (Alert, Button, Price, Cronlasthit, TemplateCustom) render UI elements but never appear in POST data.