Skip to content
Browse docs

Template overrides

Reskin any front-end template from your theme, WooCommerce-style, at {theme}/dsb/{path}.

Every front-end template Tempo renders can be overridden from the active theme, exactly like WooCommerce's template system: copy the file from the plugin's templates/ directory into your theme under dsb/, mirroring the path, and your copy wins.

plugin:  templates/booking/screens/discover.php
theme:   {your-theme}/dsb/booking/screens/discover.php

What's overridable

Everything under the plugin's templates/ directory. The main areas:

AreaPlugin pathCovers
Booking flowtemplates/booking/screens/ + partials/The four member booking steps
Checkouttemplates/checkout/The booking panel (panel.php), sticky pay bar, confirmed panel
My Accounttemplates/account/Bookings, credit and students tabs, teacher PIN, photo permission, child switcher, pager
Registertemplates/register/app.php, day/register/profile screens, roster and profile partials
First-login wizardtemplates/wizard/The standalone wizard document, screens and partials
Emailstemplates/emails/The HTML partials inside the locked transactional blocks
Sharedtemplates/partials/For example class-mark.php, the class thumbnail-and-dot used by every surface that names a class

The rules of engagement

  • Override as a last resort. The templates are built to look right on any theme, they read the --dsb-* design tokens (which already carry the club's brand colours), and most visual goals are met with CSS or the branding settings instead. The matching theme ships an intentionally empty dsb/ directory as a statement of intent.
  • Never restyle .dsb-* internals from theme CSS. Class names inside the plugin's components are internals, not API; target your own wrappers, or override the template properly.
  • Keep overridden files current. An override freezes that template at the version you copied. After plugin updates, diff your overrides against the shipped versions, the same discipline WooCommerce shops know.
  • Behaviour stays in the plugin. Templates receive prepared data and render it; the safety machinery (capacity, holds, permissions) runs before your template is ever loaded, and an override can't weaken it. One instructive example: the protected-profile card template receives unreadable-value cards with the warning text already in place of the value, so even an outdated override can't accidentally render a phone link for a value that failed to decrypt.

Two adjacent switches worth knowing

Not template overrides, but they live in the same conversation:

  • A theme that wants to host the first-login wizard inside its own layout (rather than the default full-window takeover) can opt out with the dsb_wizard_takes_over_page filter.
  • A theme that handles the booking-page-as-front-page case itself can opt out of Tempo's front-page handling with dsb_bypass_front_page_template. Both are covered with their context in Hooks and integration.
Was this helpful?

Still stuck?

Most questions are answered in a minute here. When they aren't, a real person replies.

Tempo customers Send us the question through the support form. The person who built it reads every message. Contact support
Not a customer yet? Demos, pricing and anything pre-sales. Ask before you buy. Ask a pre-sales question