Museum website development using 1C-Bitrix

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages

Museum Website Development on 1C-Bitrix

A museum website balances two functions: representing the collection in digital space and serving as a commercial platform for ticket sales. On 1C-Bitrix, both tasks are solved using standard modules — iblock for cataloging, sale for tickets — with customizations for the specifics of cultural institutions.

Collection Catalog and Exhibitions

A museum's collection can number thousands and tens of thousands of items. The structure of the Collections infoblock is designed in accordance with museum description standards:

  • PROPERTY_INVENTORY_NUM — inventory number
  • PROPERTY_AUTHOR — author/master (reference to Persons infoblock)
  • PROPERTY_DATING — dating (string — "15th century", "1890s", "c. 1650")
  • PROPERTY_TECHNIQUE — technique/material (multiple reference)
  • PROPERTY_DIMENSIONS — dimensions (string — "120×80 cm, canvas")
  • PROPERTY_COLLECTION — collection membership (reference)
  • PROPERTY_HALL — exhibition hall (reference to Halls infoblock)
  • PROPERTY_HI_RES_PHOTO — high-resolution photo (file)
  • PROPERTY_AUDIO_GUIDE — audio description (MP3 file)

For photos, an image processing module is configured: on upload, 4 variants are generated — thumbnail 300px for lists, medium 800px for cards, large 2000px for zoom, and watermarked version for unauthorized use protection. The watermark is applied through the OnFileSave handler.

Collection search is implemented through the search module with faceted filters: by period, technique, author, hall. For full-text search, Elasticsearch is connected through a custom SearchProvider — the standard Bitrix search cannot handle museum description volumes.

Online Ticket Sales

The sale module is adapted for ticket specifics. A ticket is a product in the catalog with properties:

Product Property Purpose
Ticket Type Adult / Child / Concession / Family
Exhibition Permanent / Temporary Exhibition "N"
Session Date + time slot (10:00–12:00, 12:00–14:00...)
Limit Maximum visitors per session

Visitor limit is a critical function. With each sale, the OnSaleOrderAdd handler decreases the available seat counter for the session. When the remainder reaches zero, the slot is automatically hidden from the selection widget. The counter is stored in a separate SessionSlots Highload block, not in a product property — this eliminates problems with concurrent access during simultaneous purchases. For atomicity guarantee, UPDATE ... SET count = count - 1 WHERE count > 0 is used at the SQL level.

Benefit categories (pensioners, students, disabled persons, large families) are configured through shopping basket rules in the sale module. When selecting a benefit category, the buyer uploads a document scan — a form field through ORDER_PROP of type "File". The manager verifies the document before confirming.

Virtual Tours and Online Collections

This direction transforms the museum website from a ticket window showcase into an independent cultural platform. Let's examine the technical implementation.

360° hall panoramas. Shooting is performed with a spherical camera (Insta360, Ricoh Theta). The result is equirectangular projections in JPEG or TIFF format at 8K–12K resolution. On the website, panoramas are displayed through the Pannellum JavaScript library (open source, no licensing fees) or Marzipano.

Panoramas are stored in the VirtualTours infoblock. Each element is a hall or exhibition fragment:

  • PROPERTY_PANO_IMAGE — panorama file
  • PROPERTY_HOTSPOTS — JSON with interest point coordinates (yaw, pitch, type, target)
  • PROPERTY_LINKED_PANO — linked panoramas (transitions between halls)
  • PROPERTY_AUDIO_TRACK — background audio accompaniment

Hotspots come in three types:

  • info — clicking opens an artifact card (pulled from the Collections infoblock)
  • scene — transition to another hall (another panorama)
  • audio — starts audio guide for a specific artifact

Hotspot editing is implemented through a custom admin interface: the manager opens the panorama in the admin panel, clicks on a point, and fills in properties. Yaw/pitch coordinates are calculated from the click position. No manual degree input.

Audio guides. MP3 files are linked to artifacts. When clicking on a hotspot or artifact card, an HTML5 Audio Player starts with progress visualization. Audio guides are uploaded through the admin interface with automatic conversion to AAC format for traffic savings (via FFmpeg on the server, called from an agent).

Online collection with zoom. For detailed artifact viewing, OpenSeadragon is connected — an image viewer with Deep Zoom technology. The original high-resolution photo (50–100 MP for paintings) is tiled with the vips dzsave utility. The user smoothly zooms the image, only visible tiles are loaded — the page doesn't freeze even on mobile devices.

Tiles are stored on a separate domain cdn.museum-site.ru or in an S3-compatible repository. The Bitrix CDN module is configured to serve static content from this domain.

Event Poster

The Events infoblock contains lectures, master classes, concerts, museum nights. Properties:

  • Start/end date and time (two date/time properties)
  • Age restriction (list: 0+, 6+, 12+, 16+, 18+)
  • Cost (number, 0 = free)
  • Exhibition reference (if the event is part of an exhibition)
  • Registration (yes/no + participant limit)

Output on the homepage — bitrix:news.list component with a >=DATE_ACTIVE_FROM filter for the current date and sorting by date. Past events automatically go to the archive, but remain accessible via direct link — for SEO and history.

An iCal file (.ics format) is generated for the poster, which a visitor can add to Google Calendar or Apple Calendar with one click.

Accessibility (WCAG 2.1)

Museums as government institutions are required to ensure website accessibility for people with disabilities. WCAG 2.1 Level AA requirements:

  • Text contrast — ratio of at least 4.5:1 (checked with axe-core during build)
  • Keyboard navigation — all interactive elements accessible via Tab, focus visually highlighted
  • alt-texts — for each artifact, a mandatory field in the infoblock, without it the element doesn't pass validation on save (handler OnBeforeIBlockElementUpdate)
  • High contrast mode — switch in the header, high-contrast class on <body>, alternative color scheme via CSS variables
  • Text scaling — layout in rem, base font-size changed via switcher
  • Subtitles — for video materials, mandatory <track kind="captions"> track

Schema.org and SEO

For a museum, Museum type markup is applied with nested objects:

  • Museum — main card with address, hours of operation, contacts
  • ExhibitionEvent — for temporary exhibitions
  • Event — for poster events
  • CreativeWork — for individual artifacts in the online collection
  • Offer — for tickets with price and availability

Markup is generated automatically through the JsonLd component, which collects data from infoblocks and generates a JSON-LD block in the page's <head>. The markup template is configured in the admin section — a marketer can add fields without developer involvement.