Search by

justinholtweb / craft-hitz

justinholtweb

Interactive hall plans for Craft CMS. Draw halls, stands and facilities on a real-unit floor plan in the control panel, relate exhibitors to stands, and publish a zoomable, searchable plan on the front end — Donkeytail’s hit areas, grown into a trade-fair floor plan.

Package info

github.com/justinholtweb/craft-hitz

Homepage

Documentation

Type:craft-plugin

pkg:composer/justinholtweb/craft-hitz

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-main 2026-09-29 15:26 UTC

This package is auto-updated.

Last update: 2026-09-29 15:34:44 UTC


README

Interactive hall plans for Craft CMS.

Draw your venue's halls, stands and facilities on a real-unit floor plan in the control panel, relate exhibitors to stands, and publish a zoomable, searchable plan with one line of Twig.

Hitz grew out of the Donkeytail idea — content-managed hit areas on an image — and takes it where a trade fair needs it to go. A stand is not a pin on a picture. It is a shape with a size in square metres, it sits inside a hall, it has a number visitors look for, it is available, reserved or booked, and the exhibitor list has to be able to point at it.

{{ craft.hitz.render('spring-fair', { linkField: 'exhibitor' }) }}

Craft 5.3+, PHP 8.2+. Leaflet and Leaflet-Geoman ship inside the plugin — no CDN, no API keys, no third-party requests.

What it does

  • A designer in the control panel. Draw rectangles, polygons and circles on a Cartesian plane in metres or feet (Leaflet CRS.Simple + Geoman). Snap to the plan grid and to neighbouring stands, drag, rotate, reshape. Every change saves as you let go.
  • An underlay you can replace. Put the venue's drawing underneath. Areas are stored in plan units, not image percentages, so a new drawing never moves a stand.
  • Areas are elements. Halls, stands and features have titles, codes, their own field layouts per area type, search, the trash, per-site titles, and Craft's slideout editor.
  • The boring parts, done. Surface area, dimensions ("6 × 4 m", even rotated), automatic numbering (Hall A → A-01, A-02…), and which hall each stand is in — derived from where it is, re-derived whenever anything moves.
  • A front end in one call. Labels that appear as you zoom, tooltips, popups (or your own popup template), a legend, search by code or exhibitor, highlighting, and shareable deep links (#hitz=B-07). Everything is a CSS custom property; everything is available as data for your own renderer.
  • Relations both ways. Hitz Plans and Hitz Areas relation fields, and ordinary relatedTo from either end — "the plan, with this exhibitor's stand picked out" is one option.

Pro

  • Availability — available / reserved / booked / unavailable, coloured on the map, in the legend and as index sources.
  • GeoJSON import and export (plan units, round-trippable, upsert by code) and a stands CSV for the sales team.
  • A JSON endpoint (/hitz/plans/<slug>.json) for an event app.
  • Console import/export.
  • Unlimited plans and areas (Lite: one plan, 40 areas).

Install

composer require justinholtweb/craft-hitz
php craft plugin/install hitz

A fresh install creates three area types — Hall, Stand, Facility. Go to Hitz → Plans → New plan, set its size, and open the designer.

Documentation

justinholt.com/plugins/craft-hitz/docs — also in docs/.

Editions

Lite Pro
Price Free $79, then $59/year
Plans 1 Unlimited
Areas 40 Unlimited
Designer, front end, search, relations ✓ ✓
Availability ✓
GeoJSON / CSV / JSON endpoint / console ✓

Credits

Built on Leaflet (BSD-2-Clause) and Leaflet-Geoman free edition (MIT). Inspired by Good Work's Donkeytail.

Brought to you by Justin Holt.