JoomSchool's custom field builder lets you extend student, teacher and parent profiles with whatever extra information your school needs — blood group, emergency contact, preferred bus stop, dietary notes — without writing any code. This article covers the six field types, the visibility toggles that decide where each field shows up, and the recommended setup workflow.
Overview
Out of the box, the student / teacher / parent forms include the basics: name, photo, class, contact details. But every school needs to capture extra information that doesn't fit into those defaults. The Custom Fields builder is JoomSchool's solution.
Each custom field has:
- A Field Name that becomes its label.
- A Type drawn from six built-in widgets (Input Box, Text Area, Check Box, Radio Box, Select Box, Datepicker).
- A Section that determines whether the field appears on the Student form, Teacher form or Parent form.
- Three visibility toggles that determine where on the frontend the field shows up: profile view, list view and biodata/print view.
- A field order that controls the display sequence relative to other custom fields in the same section.
Once defined, a field appears on the appropriate edit form for new and existing records. Existing records simply have an empty value for the new field until someone fills it in.
Prerequisites
- The default install seeds the six field types and the three field sections — no setup needed beyond the install.
- You should know which records you want to extend: students, teachers, parents, or all three. A field can only belong to one section, so you'll create the same field three times if you need it everywhere.
Where custom fields live
Components → JoomSchool → Fields (the Fields list view, accessible via the admin sidebar of the Students view or directly from the JoomSchool dashboard).
The list shows every defined field with columns for Name, Type, Section, visibility toggles and Status.
Creating a custom field
- Open the Fields list view and click New.
- Fill in the form:
| Field | Description | Required |
|---|---|---|
| Field Name | The label users will see (e.g. "Blood Group", "Emergency Contact"). | Yes |
| Field Type | One of: Input Box, Text Area, Check Box, Radio Box, Select Box, Datepicker. | Yes |
| Field Section | Where the field appears: Student, Teacher or Parent. | Yes |
| Published | Yes / No. Unpublished fields are hidden everywhere. | Yes |
| Required | Yes / No. Required fields must be filled in before saving the form. | Yes |
| Field Order | Numeric. Lower numbers appear first. | Yes |
| Option Values | Used only for Radio Box and Select Box: a comma-separated or one-per-line list of choices. | Conditional |
| Display on Profile | Yes / No. Show the field on the user's frontend "My Profile (view)" page. | Yes |
| Display on List | Yes / No. Show the field as a column in the admin list view. | Yes |
| Display on Biodata | Yes / No. Show the field on the printable biodata / ID card / PDF outputs. | Yes |
- Click Save & Close.
After saving, the field appears on the matching edit form (Profile tab) for the selected section.
The six field types
| Type | What it does | Best used for |
|---|---|---|
| Input Box | A single-line text field. | Names, codes, short references. |
| Text Area | A multi-line text field. | Notes, paragraphs of free text, addresses. |
| Check Box | A single yes/no toggle. | "Has consented", "On medication", "Receives stipend". |
| Radio Box | A single-select group of options (only one can be chosen). | Blood group (A+/A-/B+/B-/O+/O-/AB+/AB-), gender, status flags with a fixed list. |
| Select Box | A dropdown picker (single-select). | Same use cases as Radio Box, but better when there are many options or the form is space-constrained. |
| Datepicker | A calendar picker. | Birthdays, joining dates, expiry dates. |
For Radio Box and Select Box, fill the Option Values field with the choices, one per line. Example:
A+
A-
B+
B-
O+
O-
AB+
AB-
Visibility toggles explained
Each field has three independent toggles:
| Toggle | Where the field appears when Yes |
|---|---|
| Display on Profile | The user's "My Profile (view)" page on the frontend. |
| Display on List | A column in the admin list view (Students / Teachers / Parents). |
| Display on Biodata | The printable biodata / ID card / PDF outputs. |
A single field can be shown in any combination. Common patterns:
- Personal contact info (Emergency Contact, Phone Number) — Profile Yes, List No (privacy), Biodata Yes.
- Identifiers (Blood Group) — Profile Yes, List No, Biodata Yes.
- Internal notes — Profile No (parents and students don't need to see), List Yes, Biodata No.
Worked example: adding a "Blood Group" field
- Open the Fields list and click New.
- Field Name =
Blood Group. - Field Type = Select Box.
- Field Section = Student.
- Published = Yes, Required = No.
- Field Order =
10(somewhere visible but not first). - Option Values: ``
A+ A- B+ B- O+ O- AB+ AB-`` - Display on Profile = Yes, Display on List = No, Display on Biodata = Yes.
- Click Save & Close.
Open any student record. The Profile tab now has a "Blood Group" dropdown. Save a value; reopen the student's frontend profile or print the biodata — the Blood Group appears on both.
Reordering fields
Edit each field and change the Field Order value. The lowest number appears first within the field section. Increment by 10s (10, 20, 30) so you can insert new fields between existing ones without renumbering everything.
Editing a field after creation
You can change any property except the Section (changing it would orphan the values that have already been collected). To move a field from one section to another, recreate it in the new section and unpublish the old one.
Be cautious about changing the Field Type after data has been entered: switching from Select Box to Input Box, for instance, leaves the saved values intact but the form shows a free-text input over what was previously a controlled list.
Tips & Best Practices
- Plan your custom fields before launching JoomSchool to teachers and parents. Adding fields later is fine, but values for existing records will be empty until someone fills them in.
- Keep names short and clear. The label appears on dropdowns, list columns and biodata sheets — long labels distort layouts.
- Use Required sparingly. Required fields block the save button — too many required fields make data entry slow. Save the requirement for fields that genuinely cannot be missing.
- Don't use Custom Fields for things that already have a dedicated home. Photos, names, classes, sections and roll numbers all have their own form fields — reusing a custom Input Box for "Roll number" creates duplicates.
- Group similar fields with adjacent Field Order numbers so they appear together visually (e.g. all medical fields in 100–199, all emergency contacts in 200–299).
- Review the fields each year. As policies change, archive fields you no longer need rather than letting the form bloat.
A note on multi-language labels
The Custom Field schema does not currently include a per-language label column. Field labels are stored as plain text and appear in the same language for everyone. If your school operates in multiple languages and the field labels need to differ, consider:
- Using language INI keys for the labels and translating them through Joomla's language overrides (this requires a developer-style language override file).
- Picking labels that are short enough to be acceptable in both languages.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Custom field doesn't appear on the form. | The field's Section doesn't match the form you're looking at, or Published is No. | Check the Field Section on the field record; set Published to Yes. |
| Select Box / Radio Box dropdown is empty. | Option Values is empty. | Edit the field and add one option per line. |
| Field shows on Profile but not on List. | Display on List toggle is No. | Edit the field and toggle it. |
| Required field allows save with no value. | Browser is auto-filling a hidden default; or the Required toggle was changed but the form was cached. | Hard-refresh (Ctrl+F5); re-open the field and confirm Required = Yes. |
| Saved value disappears after editing the field. | Field Type was changed; the new type cannot interpret the old data. | Restore the previous Field Type, or accept that historical values are lost. |
| Display order on the form is wrong. | Two fields share the same Field Order value. | Edit each conflicting field and assign distinct numbers (10, 20, 30...). |
| Field labels appear in English when the rest of the site is translated. | Custom Field labels are stored as plain text. | Use Joomla language overrides to translate the label keys. |