Assembly is a system for modular content management in Drupal. It provides a revisionable, fieldable entity meant to be attached to content with a URL (nodes, taxonomy terms, etc) via Inline Entity Form to enable a rich, structured and user-friendly content model approach.

Assembly is meant to act as a supplement or replacement for the body field. Instead of adding content in a rich text editor, site builders and themers can create fielded assembly types which content managers and authors can add to nodes or other URL-accessible content to create rich pages with reusable components. It provides a meaningful, declarative way to create a content model and authoring experience that lets users focus on creating content rather than being concerned with design and layout. It strives to balance the need for flexibility for content authors with editorial workflows and a consistent front-end presentation.

Two other important goals of the project are to provide a strong developer experience for creating reusable functionality to mix in to assemblies, and to gracefully and rationally handle complexities of revisions and reusable content.

Getting Started

The steps below outline the typical setup when using Assembly as a replacement for the body field.

  • Install Assembly as usual, along with Inline Entity Form and Entity Reference Revisions.
  • Assembly relies on revision support in IEF, which is only available via a patch for now (Drupal.org issue).
  • Add assembly types at Admin > Structure > Assemblies
  • Add an entity reference revisions field to any type of content you’d like (i.e. a node type). Set the entity type as “Assembly” and select your bundles. Use unlimited cardinality if your goal is to allow adding any number of assemblies to the page.
  • In Manage Form Display, configure the field to use the inline entity form complex widget.
    • Allow users to add new assembly entities.
    • Allow users to add existing assembly entities.
    • Consider customizing the label if “assembly” isn’t language you want to expose to content editors.
  • In Manage Display, include the field in your display, hide the label and show as “Rendered entities”

More Helpful Projects

Combining Assembly with the following projects will enhance the overall experience.

  • Fences: configure default semantic markup for fields. Using assembly with fences and a strong front-end theme can often accomplish a lot of what’s required for front-end output.
  • Beryllium: an opinionated admin theme
  • Compose: enhance the authoring experience by showing visual previews of assemblies and other referenced entity types and refining the UX provided by Inline Entity Form.

Why Not Paragraphs?

Paragraphs is a very similar project conceptually. Assembly shares some prerequisites (entity reference revisions) and a general approach to modular content. Paragraphs is a great project with a strong community and I’d recommend any site builder consider that as well.

It does have a slightly different focus and approach focused on building a community of paragraph types. Assembly is somewhat more streamlined in that it’s meant to provide a head start for site builders to create a library that suits their needs and a more focused developer experience. It also places more emphasis on handling revisions and reusable content.

Supporting organizations: 

Project information

Releases