Search by

drupal / art_gallery

Drupal-Infrastructure

A typography-led Drupal CMS site template for artists and galleries: artworks, artists, exhibitions and freeform Canvas pages, with a built-in lightbox and WCAG 2.2 AA as a release criterion.

Package info

git.drupalcode.org/project/art_gallery.git

Homepage

Issues

Type:drupal-recipe

pkg:composer/drupal/art_gallery

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

1.0.0 2026-10-30 14:15 UTC

This package is auto-updated.

Last update: 2026-10-30 14:58:51 UTC


README

A Drupal CMS site template for artists and small galleries. It gives you a working gallery website in one install: artworks, artists and exhibitions with the metadata a gallery actually keeps, listing pages with filters, a lightbox, freeform pages built in Drupal Canvas, and a typography-led black-and-white design with one accent color of your choice. WCAG 2.2 AA is a release criterion, not an afterthought (see Accessibility).

It works for a single artist's portfolio as well as for a gallery that represents several artists.

What you get

Content types

  • Artwork: images (several per work, the first is the primary), artist(s), year ("c. 1898" is fine), medium, materials and technique, dimensions, edition, series, availability (available, reserved, sold, not for sale, on loan), price with a "show price" switch (off means "price on request"), inventory number, credit line, description, featured flag.
  • Artist: portrait, discipline, short and long biography, CV, born/died/based in, links, disciplines, featured flag and sort weight. Artists without a portrait get a monogram placeholder.
  • Exhibition: dates, type (solo, group, fair, online, residency), venue and address, opening hours, external link, the artists and the works in hanging order, hero image, text. Current, upcoming and past are worked out from the dates.
  • Medium and Series vocabularies. The Utility page type of Drupal CMS stays available for privacy policies and the like.

Pages and listings (Canvas pages you can edit, with Views blocks you can move):

  • Home with a hero work, "Now showing", featured works and artists.
  • Works (filterable grid: medium, artist, availability; 12 per page) and a dense index table.
  • Artists, Exhibitions (current, upcoming, past), About, Visit, and an Accessibility statement to adapt.
  • Artwork, artist and exhibition pages rendered by Canvas content templates: wall-label metadata, "more by this artist", works per exhibition, exhibitions per artist, an inquiry button.

Theme (art_gallery_theme): Archivo display type, IBM Plex Mono labels, gray mats so works are never cropped, a built-in keyboard-operable lightbox (PhotoSwipe, bundled, no CDN), light and dark scheme, white or warm page ground and an accent color, all from the theme settings form, which refuses color pairs below 4.5:1 contrast.

Also included: Drupal CMS's base template (SEO, search engine sitemap, editorial workflow, media, accessibility tooling for editors), the forms feature, SEO fields and social-sharing metatags for every gallery type, and Drupal CMS's multilingual feature: the site is translation-ready and ships in English. Artworks, artists, exhibitions, Canvas pages, menu links, the Medium and Series terms and image alt texts can be translated, and editors have the permissions. Add your languages under Configuration → Regional and language. The header has no language switcher: once a second language is added, place the Language switcher block in the header of the page layout in the Canvas editor.

Install

With the Drupal CMS installer: choose Art Gallery when the installer offers site templates (once the template is listed). With Composer and Drush:

composer create-project drupal/cms my-gallery
cd my-gallery
composer require drupal/art_gallery
./vendor/bin/drush site:install --yes --site-name="My Gallery" ../recipes/art_gallery

The install takes a minute and ends with the sample content below in place. Log in, replace the sample artists and works with your own, edit the About, Visit and Accessibility pages, and set your colors under Appearance → Art Gallery → Settings.

The sample content

The template installs six Belgian artists (Anna Boch, James Ensor, Léon Spilliaert, Jean Brusselmans, George Minne, Constantin Meunier), eighteen works and four exhibitions, so every page has something on it from the first minute. The artists and works are real and in the public domain; the gallery, the inventory numbers, prices, availability, exhibitions, venue, address and contact details are fictional and meant to be replaced. Delete or edit them freely; nothing else depends on them.

Customizing

  • Colors and fonts without code: Appearance → Art Gallery → Settings, or copy the theme's theme.css and fonts.css to your web root. Details in the theme's CUSTOMIZING.md, including the --ag-* color contract and how a Canvas Brand Kit plugs into it.
  • Layout and pages: edit the Canvas pages and content templates in the Canvas editor.
  • Single-artist site: create one Artist, leave the Artists menu item out, and use the artwork card variant without the artist line. The data model needs no change.
  • Deeper changes: copy the theme into themes/custom (see CUSTOMIZING.md) and make it yours.
  • AI coding agents: installed through the Drupal CMS installer, the template places an AGENTS.md at the project root with notes on its content model, Canvas templates and theme (with Composer alone, add drupal/art_gallery to extra.drupal-scaffold.allowed-packages to get it). Composer rewrites that file on every install or update; to keep your own edits, add "[project-root]/AGENTS.md": false under extra.drupal-scaffold.file-mapping in your project's composer.json.

Accessibility

What the theme's components do (headings, focus, target sizes, contrast, keyboard-operable lightbox and menu, reduced motion) is described in the theme's ACCESSIBILITY.md. The template adds:

  • Sample content with real alt texts. All 23 sample images describe the work, not just its title. The default pages and content templates keep one h1 and a logical heading order.
  • Accessible listings. The works filters are native select elements with visible labels, and the works index table has a caption.
  • Editoria11y for content editors (from Drupal CMS's accessibility tools), and an Accessibility statement page in the footer menu, as a template to edit.

How it is checked: before every release, axe-core (WCAG 2.x A/AA and best-practice rules) runs on the Home, Works, Artists, Exhibitions, About, Visit and Accessibility pages and on one artwork, artist and exhibition page, as an anonymous visitor, with 0 violations as the bar; Editoria11y runs on the same pages as an editor, and the menu, filters, pager and lightbox are checked with a keyboard and at phone width. In CI, the install test visits every default page and the accessibility job runs axe and a headless-browser test of the lightbox.

Known limitations: image derivatives are generated on first view, so a gray mat shows until then, and the sample content is English only.

What your site still has to do:

  • Write real alt texts for your own images.
  • Edit the Accessibility statement page (/accessibility): your name, contact details, the review date and any limitations specific to your site.
  • Keep the contrast rules when you change colors, and re-run an automated checker (axe DevTools, Lighthouse or the Editoria11y dashboard) after adding components or custom markup.

Requirements and compatibility

Drupal CMS 2.2 or later (Drupal core 11.4+, Canvas 1.x). The template depends on drupal_cms_site_template_base, drupal_cms_accessibility_tools, drupal_cms_forms, drupal_cms_multilingual, the theme and the small verf module (for the artist filter).

Support and contributing

Bugs and ideas: the issue queue. The theme has its own queue at art_gallery_theme.

Credits

Images in the sample content (content/file/)

All public domain. Art Institute of Chicago (AIC) and Cleveland Museum of Art (CMA) publish theirs as CC0 (https://www.artic.edu/open-access/open-access-images, https://www.clevelandart.org/open-access). The other images come from Wikimedia Commons, where they are tagged public domain or CC0: the paintings are out of copyright (artist dead more than 70 years) and faithful reproductions of public-domain paintings carry no copyright of their own in the EU (Directive 2019/790, article 14). The artists are real; the gallery, inventory numbers, availability, prices and exhibitions around them are fictional.

FileWorkSource
ensor-rog.jpgJames Ensor, De rog (The Skate), 1892KMSKA Antwerp, via Wikimedia Commons (public domain)
ensor-grijze-zee.jpgJames Ensor, Grijze zee (The Grey Sea), 1880KMSKA Antwerp, via Wikimedia Commons (public domain)
ensor-baden-oostende.jpgJames Ensor, De baden te Oostende (The Baths at Ostend), 1890MSK Ghent, via Wikimedia Commons (public domain)
ensor-self-portrait.jpgJames Ensor, Ensor aan de schildersezel, 1890 (artist portrait)KMSKA Antwerp, via Wikimedia Commons (public domain)
minne-reliekdrager.jpgGeorge Minne, De kleine reliekdrager (The Small Relic Bearer), 1897KMSKA Antwerp, inv. 2049, via Wikimedia Commons (CC0)
minne-solidarity.jpgGeorge Minne, Solidarity, 1898CMA 1968.191
minne-baptism.jpgGeorge Minne, The Baptism of Christ, 1899CMA 1969.248
meunier-portrait.jpgConstantin Meunier in his studio, c. 1901, photographer not credited (artist portrait)halftone reproduction via Wikimedia Commons (public domain, anonymous work published > 70 years ago)
meunier-reaper.jpgConstantin Meunier, The Reaper, c. 1895AIC
meunier-shipwrecked.jpgConstantin Meunier, Shipwrecked, c. 1890AIC
meunier-hammerman.jpgConstantin Meunier, The Hammerman, 1884AIC
boch-elevatie.jpgAnna Boch, Tijdens de elevatie (During the Elevation), 1893Mu.ZEE Ostend, SM002365, via meemoo and Wikimedia Commons (public domain)
boch-kaai-mechelen.jpgAnna Boch, Kaai in Mechelen (Wharf in Mechelen), 1906MSK Ghent, 1942-AK, via Wikimedia Commons (public domain)
boch-nettenboetsters.jpgAnna Boch, Nettenboetsters in de duinen (Net menders in the dunes)Mu.ZEE Ostend, via Wikimedia Commons (public domain)
boch-portrait.jpgThéo van Rysselberghe, Portrait of Anna Boch, c. 1889 (artist portrait)Museum of Fine Arts, Springfield MA, via Wikimedia Commons (public domain)
spilliaert-self-portrait.jpgLéon Spilliaert, Self-portrait with a red pencil, 1908 (artist portrait)Mu.ZEE Ostend, via Wikimedia Commons (public domain)
spilliaert-vertigo.jpgLéon Spilliaert, Vertigo (Duizeling), 1908Mu.ZEE Ostend, SM000696, via Wikimedia Commons (public domain); https://artinflanders.be/en/artwork/vertigo-0
spilliaert-windstoot.jpgLéon Spilliaert, De windstoot, after 1904Mu.ZEE Ostend, SM000003, via Wikimedia Commons (public domain)
spilliaert-zeedijk.jpgLéon Spilliaert, De zeedijk te Oostende van op het staketsel gezien, 1910Mu.ZEE Ostend, SM001668, via Wikimedia Commons (public domain)
brusselmans-self-portrait.jpgJean Brusselmans, Autoportrait à la pipe, etching, 1915 (artist portrait)KBR Brussels, Prints Department F-2013-2111, via Wikimedia Commons (public domain)
brusselmans-tuinen.jpgJean Brusselmans, Tuinen, 1934Mu.ZEE Ostend via artinflanders.be and Wikimedia Commons (public domain)
brusselmans-grijs-winter.jpgJean Brusselmans, Grijs winterlandschap, 1935Musea Brugge via artinflanders.be and Wikimedia Commons (public domain)
brusselmans-brabants.jpgJean Brusselmans, Brabants landschap, 1934Wikimedia Commons (public domain)

The theme's own credits (Mercury, fonts, libraries, icons, component example images) are in the CREDITS.md of art_gallery_theme.

Copyright rule used for selecting images

Only works by artists who died more than 70 years ago, so they are public domain in the EU as well as in the museums' jurisdiction. That excludes, for example, Pollock, Rothko, Brancusi and Kupka, whose works are still under copyright in Belgium even where a US museum offers them openly.