---
url: 'https://dxpr.com/nl/hc/documentation/learn-dxpr-builder/development/submodules'
title: 'Submodules | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T02:32:53+00:00'
updated: '2026-10-24T09:09:48+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  De map modules/ bevat drie submodules. Twee zijn kleine
  configuratiepakketten: een inhoudstype en een bloktype gekoppeld aan de
  builder. De derde is de legacy Entity Browser-mediakiezer die ouder is
  dan Media Library-ondersteuning. Deze pagina documenteert
  wat elk installeert, waarvan het afhangt en hoe je het inschakelt of
  uitfaseert.
tags:
  - 'Architectuur en API’s'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T09:09:48+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: Submodules
      description: |-
        De map modules/ bevat drie submodules. Twee zijn kleine
        configuratiepakketten: een inhoudstype en een bloktype gekoppeld aan de
        builder. De derde is de legacy Entity Browser-mediakiezer die ouder is
        dan Media Library-ondersteuning. Deze pagina documenteert
        wat elk installeert, waarvan het afhangt en hoe je het inschakelt of
        uitfaseert.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T02:32:53+0000'
      dateModified: '2026-10-24T09:09:48+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/nl/hc/documentation/learn-dxpr-builder/development/submodules'
      articleSection: 'Architectuur en API’s'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/nl/hc/documentation/learn-dxpr-builder/development/submodules'
      description: |-
        De map modules/ bevat drie submodules. Twee zijn kleine
        configuratiepakketten: een inhoudstype en een bloktype gekoppeld aan de
        builder. De derde is de legacy Entity Browser-mediakiezer die ouder is
        dan Media Library-ondersteuning. Deze pagina documenteert
        wat elk installeert, waarvan het afhangt en hoe je het inschakelt of
        uitfaseert.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Home
            item: 'https://dxpr.com/nl'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: nl
---
[Help Center](/nl/hc)/[Documentatie](/nl/hc/documentatie) /[Learn DXPR Builder](/hc/documentation/learn-dxpr-builder) /[Extend](/hc/documentation/learn-dxpr-builder/extend) /[Architectuur en API’s](/hc/documentation/learn-dxpr-builder/extend/architecture) # Submodules.

 Learn DXPR BuilderExtendArchitectuur en API’s

   ## In this guide

 Related guides

- [Het juiste veld kiezen voor DXPR Builder](/nl/hc/documentation/learn-dxpr-builder/integrations/content-types)
- [Een foto uit je mediabibliotheek plaatsen](/nl/hc/documentation/learn-dxpr-builder/integrations/media-library)

De map `modules/` bevat drie submodules. Twee zijn kleine configuratiepakketten: een inhoudstype en een bloktype gekoppeld aan de builder. De derde is de legacy Entity Browser-mediakiezer die ouder is dan Media Library-ondersteuning. Deze pagina documenteert wat elk installeert, waarvan het afhangt en hoe je het inschakelt of uitfaseert.

| Module | Machinenaam | Levert | Status |
|---|---|---|---|
| DXPR Builder Drag and Drop Page | `dxpr_builder_page` | `drag_and_drop_page`-inhoudstype | Ondersteund |
| DXPR Builder Block Type | `dxpr_builder_block` | `drag_and_drop_block`-bloktype | Ondersteund |
| DXPR Builder Media | `dxpr_builder_media` | Entity Browser-mediakiezer | Legacy; verborgen op de pagina Extend |

Geen van hen is vereist. De builder werkt op elk tekstveld waarvan de weergave de **DXPR Builder**-formatter gebruikt (`dxpr_builder_text`); zie [Installeren op bestaande inhoudstypen](/nl/hc/documentation/learn-dxpr-builder/getting-started/installing-on-existing-content-types).

## DXPR Builder Drag and Drop Page

`modules/dxpr_builder_page` installeert het inhoudstype **Drag and Drop Page**(`node.type.drag_and_drop_page`) uit `config/optional/`:

- Het `body`-veld, met de standaardweergave die de `dxpr_builder_text`-formatter gebruikt en de formulierweergave gegroepeerd met Field Group.
- Drie DXPR Theme-velden: `field_dth_hide_regions`, `field_dth_main_content_width` en `field_dth_page_layout`. Ze installeren alleen wanneer hun veldopslag bestaat, die de DXPR Theme Helper-module levert.

Afhankelijkheden uit `dxpr_builder_page.info.yml`: `field_group`, `text`, `node` en `dxpr_builder`. `hook_install()` maakt de `body`-veldopslag aan wanneer die niet bestaat. Wanneer de optionele config niet kan installeren, zoals op het Minimal-profiel, installeert hij het type, bodyveld en weergaven zelf, zonder de `menu_ui`- en `path`-delen. `dxpr_builder_page_update_8001()` markeert de geïnstalleerde config als afgedwongen door de module.

`src/DXPRBuilderPageUninstallValidator.php` (geregistreerd in `dxpr_builder_page.services.yml`) blokkeert deïnstalleren zolang een `drag_and_drop_page`-node bestaat. Verwijder of wijzig eerst het type van die nodes.

1. Schakel de module in:

    ```bash
    drush en dxpr_builder_page -y

    ```
2. Maak een pagina op `/node/add/drag_and_drop_page`. De builder start op het bodyveld wanneer de pagina door een redacteur wordt bekeken.

Als inschakelen mislukt met "unmet dependencies", schakel Field Group in en check dat een `body`-veldopslag bestaat; zie [Problemen na het updaten](/nl/hc/documentation/learn-dxpr-builder/troubleshooting/after-updating).

## DXPR Builder Block Type

`modules/dxpr_builder_block` installeert het bloktype **Drag and Drop Block**(`block_content.type.drag_and_drop_block`) uit `config/optional/`, met een `body`-veld, de `dxpr_builder_text`-formatter op de standaardweergave en de formulierweergave. Het type heeft **Create new revision** aanstaan, en `dxpr_builder_block_update_8002()` zet het aan voor oudere installs, zodat elke builderopslagactie op een blok een revisie maakt (zie [Contentstaging](/nl/hc/documentation/learn-dxpr-builder/advanced/content-staging)).

Afhankelijkheden: `text`, `node` en `dxpr_builder`.

1. Schakel de module in:

    ```bash
    drush en dxpr_builder_block -y

    ```
2. Maak een blok op `/block/add/drag_and_drop_block`.
3. Plaats het in een regio. Redacteurs bewerken het ter plekke op elke pagina waar het verschijnt.

`dxpr_builder_entity_type_alter()` wisselt de eigen `Drupal\dxpr_builder\Entity\BlockContent`-klasse van de module in, zoals hij doet voor `Node`. De klasse slaat een lege string op in lege buildervelden, zodat de editor altijd iets heeft om aan te koppelen. Een bloktype dat je zelf maakt werkt daarom op dezelfde manier zodra zijn weergave de DXPR Builder-formatter gebruikt.

## DXPR Builder Media

`modules/dxpr_builder_media` is de op Entity Browser gebaseerde afbeeldingskiezer die de module gebruikte vóór core Media Library-ondersteuning. Hij is gemarkeerd met `hidden: true` in zijn `.info.yml`, dus hij verschijnt niet bij **Extend**; je kunt hem nog steeds inschakelen met Drush. Hij installeert:

- `entity_browser.browser.dxpr_builder_media_modal`: een modale browser gelabeld **DXPR Builder Image Browser** met twee widgets, een **Media Library**-tab ondersteund door de `dxpr_builder_media`-View en een **Upload new image**-tab die via Inline Entity Form een `image`-media-entiteit maakt.
- `views.view.dxpr_builder_media`: het mediagrid voor de eerste widget.
- `image.style.dxpr_builder_media_thumbnail`: een 300 bij 300 pixel scale-and-crop-stijl voor het grid.
- Libraries `view`, `claro_style` en `gin_style`(`dxpr_builder_media.libraries.yml`). De module koppelt de Gin-stylesheet aan de View wanneer het actieve thema Gin is of erop is gebaseerd, en anders de Claro-stylesheet.

Afhankelijkheden: `inline_entity_form`, `entity_browser`, `entity_browser_entity_form`, `media`, `media_library` en `views`. Bij installatie zet de module `media_browser` in `dxpr_builder.settings` op `dxpr_builder_media_modal`; bij deïnstallatie zet hij hem op een lege string (**Basic file upload**) en verwijdert de afbeeldingsstijl.

De aanbevolen browser is core Media Library, die geen submodule nodig heeft:

1. Deïnstalleer de legacymodule als die is ingeschakeld:

    ```bash
    drush pm:uninstall dxpr_builder_media -y

    ```
2. Ga naar **DXPR Studio &gt; DXPR Builder &gt; General Settings**(`/admin/dxpr_studio/dxpr_builder/settings`) en open **Media**.
3. Zet **Browser type** op **Media Library** en klik op **Save settings**. De deïnstallatie heeft hem teruggezet op **Basic file upload**.

Houd de submodule alleen op een site die afhangt van een Entity Browser die bestands-ID's teruggeeft; zie [Afbeeldingen uploaden niet of verdwijnen](/nl/hc/documentation/learn-dxpr-builder/troubleshooting/images-and-media)voor de fouten die een niet-passende browser produceert. De module draagt de enige PHPUnit-test van de repository, `tests/src/FunctionalJavascript/MediaEntityBrowserTest.php`; zie [Testen](/nl/hc/documentation/learn-dxpr-builder/development/testing).

## Meerdere tegelijk inschakelen

```bash
drush en dxpr_builder_page dxpr_builder_block -y

```

Elke submodule is onafhankelijk van de andere.

## Wat nu?

- [Inhoudstypen](/nl/hc/documentation/learn-dxpr-builder/integrations/content-types) voor het gebruik van de builder op je eigen inhoudstypen.
- [Media Library-integratie](/nl/hc/documentation/learn-dxpr-builder/integrations/media-library) voor de aanbevolen afbeeldingskiezer.