Visual Page Builder: a drag-and-drop page editor for Omeka S (plus a companion theme)

Hi, my name is John and I work for the Dickinson Historical Society in Dickinson, Texas. I really wanted to solve the problem of designing pages and laying them out in Omeka S, so I got to work on a drag-and-drop page builder. I’m sharing it here in case it helps other small museums, historical societies, and archives, and I’d welcome feedback.

Here is the link because I really don’t know how to share it.

What it does

Visual Page Builder adds an “Open visual editor” button to every site page. The page opens full screen in an editor where you can:

  • Build with sections and columns. Drag the bar between columns to resize them.
  • Drag blocks into place, or click a block in the sidebar to add it.
  • Type text right on the page, and change any block’s settings in the sidebar.
  • See live previews of your real items. Every block also has an ⓘ button that explains what it does in plain language.
  • Undo, redo, and save with Ctrl+Z and Ctrl+S.
  • Start from 30 page templates (home, browse, story/exhibit, about, contact, events and support) or build from scratch.

It also includes:

  • 40 extra blocks (“Special Blocks”) for historical societies:

    • random and recent items, item of the day, on this day
    • collection cards and counts, browse by decade, subjects list, item table, gallery with zoom, slideshow
    • then-and-now photo slider, oral history with transcript, document with transcription, “who’s who in this photo” (numbered markers on people), milestones timeline
    • visit info, open now, upcoming events (with calendar feeds), announcement bar, fundraising progress, newsletter sign-up
    • people and partners, embeds from trusted sites, share buttons, and how to cite

    Item blocks can pull from the current site, chosen sites, or all sites.

  • Menu builder: arrange the site menu and pick from 15 menu styles, with a preview.

  • Header and footer builder: build headers and footers in the same editor, from 10 templates.

  • Visit info, entered once: a section in each site’s settings for hours, address, and closed dates, used by several blocks.

How it works

  • Pages are saved in Omeka’s own Grid layout. Sections are stored as block groups, so they’re ordinary Omeka pages.
  • If you remove the module, regular blocks keep showing (stacked instead of in columns) and Special Blocks hide until it’s back. Their settings are kept.
  • Every Special Block also works in Omeka’s standard page editor.
  • Other modules can give their blocks settings forms and previews in the visual editor by describing their fields in a small schema. The README explains how.
  • No build step and no outside services. The editor is plain JavaScript, and nothing loads fonts or scripts from other sites.

The Companion Theme for Visual Page Builder

The module works with any theme. The companion theme is optional, but it’s made to show pages exactly as you build them. It’s also the theme that draws the 15 menu styles and your built header and footer. Its settings cover logo, colors, fonts, page width, search box, footer text, and social links.

Requirements

  • Omeka S 4.1 or later. I’ve tested it on 4.1.1 and 4.2.1.
  • PHP 7.4 or later. I’ve tested it on PHP 8.3.
  • For calendar feeds in the Upcoming events block, the server needs to be able to reach the calendar’s address.
  • I recommend keeping Omeka’s “Use HTMLPurifier” setting on.
  • Set your time zone under Settings › General, since several blocks depend on “today”.

Installing

The download has both pieces plus a plain-text guide:

  1. Upload the VisualPageBuilder folder to modules/, then click Install under Modules.
  2. Optionally, upload visual-page-builder-companion to themes/ and choose it under your site’s Theme.

Back up your database first, as with any module.

Status

This is the first public release (1.0). It has an automated test suite that runs against real Omeka installs, but it hasn’t had wide use yet. Please try it on a test site first, and let me know what works, what doesn’t, and what blocks you’d find useful.

Download: https://drive.google.com/file/d/107tUSM5HhhcTzciVy_rb2gbni_Itskhf/view?usp=drive_link
License: GPL-2.0-or-later (GNU General Public License, version 2 or later)

Thanks,
John Dougan
Dickinson Historical Society


Here are screenshots. A lot of the modules and blocks that you have to install elsewhere are missing features. I am working my way through updates and trying to consolidate everything into one place.

Hi John,

This sounds like a great enhancement of the UI, congratulations! Did you build your module on an open-source editor library?

It is written from scratch, and to be up front utilizing Claude. I am working on it actively to make refinements. The main goals I have are to extend omeka so it’s easier to use. I’ve put the stipulations that all code is clearly documented. I am willing to maintain updates and refinements going forward. This is not my only project I am working on like this. I’ve already built a desktop app that connects to Omeka and syncs archives with it. I’m building the tools to make my job easier as well as volunteers that are in and out of our museum. I am also working with other museums in the county. Given that most of us have limited resources and updating things is slow this is how I’m working to help us through that. I will put another update out on this module this week that consolidates editing of the pages, headers and footers. When I get to a place where I feel is a good refined spot I will place it on GitHub with full documentation for others.

Hi @historynerd ,

This looks really cool.

As you put it on GitHub, you can follow these instructions so that it gets listed in the Omeka module directory.

Okay here is an update with refinements. I consolidated editing headers, footers and pages into one area as well as the option to click between them to make changes. I also added blocks: Maps, Timeline and Story Maps.

Story maps lets you choose a location on a map, set a date, description, and item. It combines a time line with a map, you press play and it progresses through the timeline moving to each item on the map.