Certificates & templates
Design and print every document — certificates, receipts, admit cards, seat plans and more.
Every printed document in ApexityEdu is driven by a template — an HTML
document with {{placeholders}} that ApexityEdu fills in at print time. This
page explains how to use and customise them.
The document kinds
| Kind | Printed from |
|---|---|
| Admit card | Bulk Print → Admit cards; People drawer (per student) |
| Exam routine | Bulk Print → Exam routines (or inside admit cards) |
| Result certificate | Bulk Print → Results; Exams → marksheet |
| Position / achievement certificate | Exams → Certificates |
| Attestation paper | People → Essential certificates; Bulk Print |
| Transfer certificate | People → Essential certificates |
| Testimonial | People → Essential certificates |
| Payment receipt | Auto-printed after a payment; ledger download |
| Seat plan | Bulk Print → Seat plans |
| Student profile | Built-in document (not a template) |
The student profile sheet is a built-in document — it needs no template, so profile printing never fails with “no template found”.
Managing templates
Open Templates (Admin → Templates) to manage admit-card, result, attestation, transfer, testimonial, receipt and seat-plan templates. You can also reach certificates via Exams → Certificates (which adds a Position / achievement kind).
For each template you can:
- Create — give it a name and a unique short code; a sensible default HTML is pre-filled for every kind.
- Edit — change the HTML.
- Duplicate — copy a template to start a variant.
- Deactivate / activate — only active templates are eligible for use.
- Preview — render it with sample data to check the layout.
Default templates ship with every school (only inserted if the school hasn’t customised them), so you can print right away and customise later.
Placeholders
Templates use {{variable}} placeholders. Common ones include:
{{student_name}}, {{local_name}}, {{student_id}}, {{roll_no}},
{{class_name}}, {{section_name}}, {{class}}, {{guardian_name}},
{{guardian_phone}}, {{school_name}}, {{school_address}}, {{term_name}},
{{gpa}}, {{grade}}, {{position}}, {{class_position}},
{{section_position}}, {{total_obtained}}, {{total_full}}, {{date}},
{{year}}.
- A default can be supplied:
{{gpa|—}}. - Guardians are read from the database when the certificate prints. The
{{guardian_*}}fields always describe the first guardian added to that student in People — soFatherandMotherboth linked means whichever was linked first. Available:{{guardian_name}},{{guardian_local_name}},{{guardian_relation}},{{guardian_phone}},{{guardian_email}},{{guardian_occupation}},{{guardian_address}},{{guardian_nid_number}},{{guardian_photo_url}}. To print every guardian instead, loop{{#guardians}}…{{/guardians}}(same field names without theguardian_prefix, plus{{guardians_count}}). If a student has no guardian linked, these render empty — wrap guardian lines in a conditional block such as{{#guardian_name}}…{{/guardian_name}}so nothing is printed as a blank gap. - Loop over subjects with
{{#subjects}}…{{/subjects}}(fieldsname,full,obtained,grade,gpa). - Conditional blocks render only when a value exists:
{{#student_photo_url}}…{{/student_photo_url}}. - For seat plans, loop
{{#students}}…{{/students}}(each hasindex,full_name,local_name,roll_no,student_id,class_name,section_name), plus{{count}},{{room_name}}.
Unknown placeholders become empty (no error), so a template won’t break if a field is missing.
No room from exam terms
Rooms exist only on the weekly class routine and on seat plans (, typed at print time in Bulk Print → Seat plans). An admit card’s rows carry date, subject, time, marks and class only.
Photos in templates
- Student photo:
{{student_photo_url}}— render with your own size, e.g.<img src="{{student_photo_url}}" style="width:120px;height:120px;object-fit:cover">. - School logo:
{{school_logo_url}}(set in Settings → School logo).
Both are private, time-limited URLs that the print document loads automatically.
Admit cards and routines
Admit-card templates have a routine mode:
- Inline — print the exam routine inside the admit card.
- Separate — print the routine as its own page right after the admit card.
- None — no routine.
Position / achievement certificates
A position certificate states a person’s position in an event (e.g. “1st — Annual Science Olympiad”). Issue it from Exams → Certificates → Issue certificate:
- Pick a template (a Position / achievement kind shows event + position fields).
- Pick the recipient — an enrolled student (search) or type a name (for anyone without a student record).
- Type the event and position (optionally an event date and remarks).
- Save (persist) or Save & print.
Issued certificates are listed in Issued certificates, where you can view and re-print any of them. The certificate is re-rendered from the live template each time, so fixing a typo in the template fixes every certificate ever issued from it — only the issue date is pinned.
There’s also Issue bulk to issue one certificate per student of a class with a shared event/position (e.g. “Participant”).
Auto-picking a template (the library method)
When printing results, ApexityEdu can pick the right template automatically
based on a template’s logic field (e.g. { "term_type": "final", "class_level": "secondary" }). The first active template whose logic fully
matches wins; otherwise the first active template is used. This lets a school
keep one template for term exams and another for finals, and the right one is
chosen automatically.
Printing flow
- Single documents (a receipt, one profile, one admit card) render instantly and open the print dialog.
- Bulk batches (Bulk Print, Essential Certificates, Seat Plans, quiz certificate batches) show a “Rendering documents…” overlay while the batch is prepared, then open one print dialog with each document on its own page.
Tips
- Duplicate a default template and tweak it rather than starting from scratch.
- Use Preview before printing a class set to catch layout issues.
- Keep a
logicfield per template if you want different certificates for different term types. - Fix typos in the template itself — issued certificates re-render from it.