Custom Tables extension for Joomla!

Version: 2.0.8
Custom Tables is popular Joomla Extension

Add Tables, Fields, Layouts to create a catalog, edit form or details page. Has 40 Field Types like Integer, Decimal, Text String, Time, Email, Color, Image, File, User, Language, etc. Edit Form Input boxes depend on the field type, Date field type will show a calendar, Color - Color Picker, Image - Image Uploader, etc.
Layout Editor with Twig like language has Auto-Create button that will create a new layout based on the list of fields table has.

Submit Form:

Catalog Page:

Please leave a review about this extension here:

Custom Tables for Joomla. Add Tables, Fields, Layouts to create a catalog, edit form or details page.
Has 40 Field Types like Integer, Decimal, Text String, Date, Time, Email, Color, Image, File, Table Join, User, Language, etc.
Edit Form Input boxes depend on the field type, Date field type will show a calendar, Color - Color Picker, Image - Image Uploader, etc.
Tables can be connected using Table Join field type (LEFT JOIN).
Layout Editor with Twig like language has an Auto-Create button that will create a new layout based on the list of fields the table has.
Tables are stored in MySQL or Maria database, all queries and field values are sanitized.

Creating a Custom Table

When creating a new Custom Table, it is important to get the schema right the first time, though this won't be difficult to change later.
The schema is like the blueprint for the table. We need to define each field (column) along with its parameters.


Let's create an example Custom Table "Appointments" with 3 fields: Full Name, Email and Date. We will also have a Submit Form and a Catalog View page.

Submit Form:

Catalog Page:

Step by step guide:

  1. First to create a new Custom Table, go to Components / Custom Tables. Click on Tables section icon.

  2. Then click on [New] button.

  3. Fill the form. "Unique Table Name" is how the table will be identified in the system.
    "Table Title" is translatable name of the table that would be visible to front-end users, if set so.
    If you have multilingual website, then more "Table Title" fields will appear - one per each language.
    Categery is to organize tables in case you have more than one. If you only have one table, it is not necessary to set the category. 

  4. Description. Add some table description - it can be visible to front-end users, if set so.

    When done, click Save.

  5. Now we have empty table. Click on Fields (0) link to manage Table Fields.

  6. Click on [New] button to create new field. Fill up the form and click Save.

  7. Now create "fullname" field. Fill the form. Save it and create more fields.

  8. Create "email" field.

  9. Create "date" field.

  10. Set additional options if needed.

  11. We have 3 fields.

  12. Introduction to output Layouts.

    The Layout is the way in which the parts of Custom Table are arranged on a rendered HTML page.
    In Custom Tables we use special "tags" that will be replaced with the content from the database or generated by the process.
    Example: [table:title] - That would be replaced with current table title - "Appointments"

    Lets move on and create our first Layout.

  13. Click on [New] button to create new Layout.

  14. Enter Layout name "SubmitAppointments", that must be unique as it will be used as an identifier to find the Layout.
    Select Type: Type on what kind of page it will be used. We need a layout for Submit Form page so select "Edit Form" type.
    Select table to attach the layout to.
    Now you may as well use "Layout Auto Creator" to generate the layout based on the type and fields Custom Table has.

  15. You may edit generated layout and delete or add more features (Tags)

  16. Most of the Tags have their parameters. Example: Tag [table:param] has parameters "title" and "description" so appropriate value will be returned as set in parameters.
    Simply double-click on a Tag to see what parameters it has.

  17. Tag "buttons" renders form submit button bar.
    When you finish editing the Layout, save it.

  18. We have Edit Form Layout. Now we need a Catalog Layout - Catalog Layout is a form of table data output to show submited records.
    Click on [New] to create new Layout, enter Layout Name "ListOfLayouts" for example.
    Select Type - "Simple Catalog". This type of layout allows to render HTML Table output using {catalogtable:} tag.
    Click on "Layout Auto Creator" too to generate the Simple Catalog layout.

  19. Click on Field Tags, [date] for example to adjust output format.

  20. Or


    or to set what kind of buttons you want to have there. When you finish - Click Save.

  21. Also Create Email Layout - It will be send to an email provided in Menu Item (This will be explained later.) after form submition.

  22. Now lets setup the front-end. We will use Menu Items to create front-end pages.
    First create a new Menu Item, enter the Menu Title.

  23. Select Menu Item Type. We need Custom Tables - Add New Item (This is submit Form page)

  24. Go to Settings, Select Table and set "Who may add content" to Public - to let unregistered users submit the form.
    The rest set to Administrator or Super Administrator.

  25. Set "Guests Can Add New Records" to "Guests Can Add New Records"
    Select Edit Layout
    Set "Send Email when record" to "Added"
    To "On Record Add Send Email to" type the email address where do you want an email will be sent to.
    Also Select Email Layout. Save it.

  26. Now it's time to see how it looks in-front end. Open in front-end the menu item you just created. It should look like this:

    You will recieve an email after submiting this form.

    Try to change/add various parameters Layout to familiarize yourself.

  27. To view submited records we have "ListOfAppontments" layout. Create a menu item with Custom Tables/Catalog type to have it in fron-end.

  28. Select table and layout. Select who may add/edit content

  29. Select edit layout to be able to edit records.

  30. Set who may view this Manu Item

  31. This is what you will have in a front-end of your website:

By default new table comes with just two fields: [id] (int(10)) where unique record ID stored, and [published] (tinyint(1)) which will mark a record as published/visibe (1) or unpublished/hidden (0).
These two fields cannot be changed or deleted.

  • 2.0.8 (2021-01-10) - Filebox field type front view improved.
  • 2.0.7 (2020-11-17) - Delete record bug fixed.
  • 2.0.6 (2020-11-12) - File Box and Gallery field types create folders if not exists. ACL Table records access control added (not implemented yet) Translation bug fixed. Tool bar tag gallery button value fixed.
  • 2.0.3 (2020-11-08) - Create "Files" field type bug fixed.
  • 2.0.1 (2020-10-28) - Back-end records view added.
  • 1.9.9 (2020-10-06) - CT Field Type output fixed (short value).
  • 1.9.7 (2020-09-09) - PHP 7.4 compatible.
  • 1.9.6 (2020-09-01) - CSV output improved - Page Layout can contain the header.
  • 1.9.4 (2020-07-07) - [_edit:] tags are replaced with the field processed value if no permission to edit granted.
  • 1.9.3 (2020-06-25) - Link field type added with client-side validation.
  • 1.9.2 (2020-06-01) - Video file type added: mp4 m4a m4p m4b m4r m4v wma flv mpg 3gp wmv mov swf.
  • 1.9.1 (2020-05-21) - CSV Outputs all result records not limited by Limit menu item parameter.
  • 1.9.0 (2020-05-14) - Send email improved" email and subject are rendered separately.
  • 1.8.9 (2020-05-11) - Upload file bug fixed. Field name prefix changed.
  • 1.8.8 (2020-05-10) - Table Join save field prefix fixed.
  • 1.8.7 (2020-05-09) - The feature to render edit layout as catalog record result added.
  • 1.8.6 (2020-05-05) - Database name may contain dash characters now.
  • 1.8.5 (2020-04-29) - Layout parser - number of quotes lifted to 1000.
  • 1.8.4 (2020-04-20) - Dependence toolbar button added - Back-end, Layout editor - Dependances toolbar button added. Language files added: de-DE, el-GR, fr-FR, it-IT.
  • 1.8.3 (2020-04-03) - Layout tag can be used recursively.
  • 1.8.2 (2020-03-23) - French translation added.
  • 1.8.1 (2020-02-27) - Email sent status field added to Edit menu item, if email is sent after submitting the form then 1 will be saved to provided field or 0 if not sent (error etc).
  • 1.8.0 (2020-02-24) - Image type fields can be used in filters. Example uploadedimage!=0.
  • 1.7.9 (2020-02-05) - Back-end. Layout editor, vertical bar added when too many fields.
  • 1.7.8 (2020-01-06) - Installation package fixed.
  • 1.7.7 (2019-12-26) - General update: CSV Import improved. File Link field type improved.
  • 1.7.4 (2019-11-29) - Layout editor updated, Tag buttons added to the toolbar that improved the editor space.
  • 1.7.3 (2019-11-21) - {currenturl} tag improved, new parameters added like: word,cmd,base64decode,uint.
  • 1.7.2 (2019-11-21) - Unnecessary JS alerts deleted.
  • 1.7.1 (2019-11-20) - Compare to empty "" filter added. "notrailingslash" parameter added to {websiteroot:includehost,notrailingslash}. MD5 Field wizard type improved - you can select fields now, no need to type their names. Update default values triggers on save record event not on refresh record event only.
  • 1.7.0 (2019-11-18) - Color field type improved, transparency added and output format selector added.
  • 1.6.9 (2019-11-08) - Edit Layout Custom Redirect Link added (to save as Copy button). Code cleaned.
  • 1.6.8 (2019-11-08) - Layout Wizard JS bug fixed.
  • 1.6.7 (2019-11-07) - Filebox front-end links fixed.
  • 1.6.6 (2019-11-05) - Checkbox front-end view improved, you can select checkbox type in Layout code.
  • 1.6.5 (2019-10-28) - Checkbox front-end view improved, the appearance depends on template used.
  • 1.6.4 (2019-10-25) - {button:delete} tag added. {add:importcsv} functionality improved: it can recognize UTF-8 header and normalize table if structure is already set in Custom Tables. Import Table JS bug fixed (it didn't submit the form automatically before). Layout Editor improved. Tags like [_value:] and [_edit:] are clickable now, to allow field selection
  • 1.6.3 (2019-10-21) - Include Layout tag added {layout:layout_name}. Links to JS files fixed (didn't work if you have a website not in the root folder )
  • 1.6.2 (2019-10-21) - Order By fields added (_id, _published).
  • 1.6.1 (2019-09-23) - CSV import tool bug fixed.
  • 1.6.0 (2019-09-23) - Installation bug fixed (some files was 0bytes).
  • 1.5.9 (2019-09-19) - Documentation improved. Edit form / Save buttons return to previous page JS bug fixed.
  • 1.5.7 (2019-09-19) - Fields table improved. Type Params is 1024 long. Field description enlarged up to is 2gb (text).
  • 1.5.6 (2019-09-15) - User ID and Creation time field types improved, value updates when record copied.
  • 1.5.4 (2019-09-12) - PHPonChange and PHPOnAdd field types improved- you can user double quotes and single quotes now.
  • 1.5.3 (2019-08-28) - Import CSV tag added {add:,importcsv}.
  • 1.5.2 (2019-08-25) - Back-end, layout editor, tag parameters bug fixed.
  • 1.5.1 (2019-08-25) - Pagination "limitstart" changed to "start".
  • 1.5.0 (2019-08-12) - Foreign Key can be disabled for Table Join fields, PHP On View field type "Disable Value storage" option added. Calculates values on the fly.
  • 1.4.8 (2019-08-09) - Table Join field type dynamic selector fixed.
  • 1.4.7 (2019-08-08) - Import structure button fixed.
  • 1.4.6 (2019-08-02) - Save buttons improved to fire onSubmit event.
  • 1.4.5 (2019-07-30) - Image field type value tag fixed.
  • 1.4.4 (2019-07-29) - Save and Close button type changed.
  • 1.4.3 (2019-07-18) - Save button redirect fixed.
  • 1.4.1 (2019-07-10) - Sub If statement tags are possible now.
  • 1.4.0 (2019-07-08) - Save and Close buttons bug fixed.
  • 1.3.9 (2019-07-05) - Save and Close buttons class and return path bug fixed.
  • 1.3.8 (2019-07-04) - Save and continue bug fixed.
  • 1.3.6 (2019-07-04) - File field type improved. You may choose how to render the link now.
  • 1.3.2 (2019-06-27) - Package file was corrupted. Fixed.
  • 1.3.1 (2019-06-26) - Time field type added.
  • 1.2.9 (2019-06-17) - Details vie bug fixed.
  • 1.2.8 (2019-06-17) - [_edit:] tag added. It allows you to have editable item in any layout with save on change functionality.
  • 1.2.7 (2019-06-07) - Multilingual string/text field types language parameter added to Value Processor; Save CSV file name can use language file translations. Batch toolbar icon are visible to selected user groups only.
  • 1.2.6 (2019-05-29) - Translation fixed.
  • 1.2.5 (2019-05-28) - {button} tag added. Click to see details.
  • 1.2.4 (2019-05-27) - Create new table bug fixed.
  • 1.2.3 (2019-05-27) - Documentation added. Menu components cleaned.
  • 1.2.2 (2019-05-24) - Default field values may include General Tags now. Example 2021-01-16
  • 1.2.0 (2019-05-07) - Front-end language file fixed. There was wrong file in the package.
  • 1.1.9 (2019-05-06) - Back-end Table's dependencies tab added.
  • 1.1.8 (2019-04-30) - CSV export "enable content plugins" functionality added.
  • 1.1.7 (2019-04-25) - Text Search improved. It breaks search request by [space] and uses LIKE MySQL function to compare each word.
  • 1.1.6 (2019-04-24) - Create user accounts for published records only.
  • 1.1.5 (2019-04-24) - additional option "improved" added.
  • 1.1.4 (2019-04-08) - Table Join can show/hide unpublished records.
  • 1.1.3 (2019-03-21) - Save As New improved, it copies all the fields.
  • 1.1.2 (2019-02-07) - Date field type filter fixed.
  • 1.1.0 (2019-02-06) - Edit Form warnings fixed.
  • 1.0.99 (2019-02-04) - Some translations are fixed. Filter and order by date my include the date format (mysql). Example: "birthdate:%j"
  • 1.0.96 (2019-01-30) - Alias improved (able to find unpublished records).
  • 1.0.95 (2019-01-29) - Table Join improved (able to join unpublished records).
  • 1.0.94 (2019-01-17) - PHP 7.2 compatible.
  • 1.0.92 (2019-01-15) - Create User Unique filter added.
  • 1.0.91 (2019-01-13) - New parameters added: Table Join field type: Allow Select unpublished records, Selector added. Also, you may show layout processes values in dropdown lists.
  • 1.0.91 (2019-01-11) - Language file fixed.
  • 1.0.90 (2019-01-08) - Code cleanup.
  • 1.0.89 (2019-01-07) - Create User functionality added. Custom Tables may try to create a new user account if certain conditions are met.
  • 1.0.88 (2019-01-04) - SEF Links improved.
  • 1.0.87 (2019-01-03) - Pagination bug fixed, translations added.
  • 1.0.86 (2018-12-27) - Overral improvement.
  • 1.0.83 (2018-12-06) - Integer field type search bug fixed.
  • 1.0.82 (2018-12-03) - reCaptcha fixed.
  • 1.0.81 (2018-12-03) - Back-end translation fields added.
  • 1.0.80 (2018-11-29) - Image Field Type default value fixed.
  • 1.0.79 (2018-11-29) - Back-end, Add New Table Join Field bug fixed. XML output bug fixed.
  • 1.0.76 (2018-10-08) - Image file type required field validation added.
  • 1.0.74 (2018-10-05) - CSV export improved - Saves as UTF16.
  • 1.0.72 (2018-10-02) - File upload improved. It accepts modern (Open XML) docx,xlsx and pptx files.
  • 1.0.70 (2018-09-28) - CSV Table view bug fixed.
  • 1.0.69 (2018-09-28) - File/Image upload bug fixed. There was a conflict in Safari, about SSL certificate of one of the JQuery repositories.
  • 1.0.67 (2018-09-20) - File Box Field Type table check added.
  • 1.0.65 (2018-09-14) - Field Types improved (the way data stored).
  • 1.0.63 (2018-09-12) - User tag values added, docx,xlsx,pptx specific mime types fixed.
  • 1.0.62 (2018-09-10) - User tag values added, docx,xlsx,pptx specific mime types added.
  • 1.0.61 (2018-09-10) - Code pareses improved - it will ignore quotes with leading slash character.
  • 1.0.59 (2018-09-08) - Item Tags added to Simple Catalog Layout type. Table structure import method improved in Pro version.
  • 1.0.58 (2018-09-08) - Pro version improved - process uploaded file before user download functionality added. Free version: uploaded file link can be limited by host, user id and time.
  • 1.0.57 (2018-09-05) - Checks email domain MX record before saving email type filed value. Color field type added. Alias field type added.
  • 1.0.56 (2018-09-04) - Bug fixed. There was a problem with the links if the website wasn't located at the root directory.
  • 1.0.55 (2018-09-04) - JURI:root() added to source links.
  • 1.0.54 (2018-09-04) - Tabs tag added. Set page title bug fixed.
  • 1.0.53 (2018-08-20) - If statements improved, IE compatibility back-end fixed.
  • 1.0.51 (2018-08-03) - Security Update.
  • 1.0.46 (2018-08-02) - Private links to uploaded files added.
  • 1.0.45 (2018-08-01) - If statements added.
  • 1.0.44 (2018-07-28) - AJAX Image Uploader added.
  • 1.0.42 (2018-07-25) - Code cleaned.
  • 1.0.41 (2018-07-24) - Some word spelling fixed and code cleaned.
  • 1.0.40 - First public release. is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.