---
url: 'https://dxpr.com/de/hc/documentation/learn-dxpr-builder/development/submodules'
title: 'Submodule | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T04:04:39+00:00'
updated: '2026-10-24T09:09:48+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  Der Ordner modules/ hält drei Submodule. Zwei sind kleine
  Konfigurationspakete: ein Inhaltstyp und ein Blocktyp, verdrahtet mit dem
  Builder. Das dritte ist der alte Entity-Browser-Medienpicker, der älter ist
  als die Medienbibliothek-Unterstützung. Diese Seite dokumentiert, was jedes
  installiert, wovon es abhängt und wie Sie es aktivieren oder ausmustern.
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: Submodule
      description: |-
        Der Ordner modules/ hält drei Submodule. Zwei sind kleine
        Konfigurationspakete: ein Inhaltstyp und ein Blocktyp, verdrahtet mit dem
        Builder. Das dritte ist der alte Entity-Browser-Medienpicker, der älter ist
        als die Medienbibliothek-Unterstützung. Diese Seite dokumentiert, was jedes
        installiert, wovon es abhängt und wie Sie es aktivieren oder ausmustern.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T04:04:39+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/de/hc/documentation/learn-dxpr-builder/development/submodules'
      articleSection: 'Architectuur en API’s'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/de/hc/documentation/learn-dxpr-builder/development/submodules'
      description: |-
        Der Ordner modules/ hält drei Submodule. Zwei sind kleine
        Konfigurationspakete: ein Inhaltstyp und ein Blocktyp, verdrahtet mit dem
        Builder. Das dritte ist der alte Entity-Browser-Medienpicker, der älter ist
        als die Medienbibliothek-Unterstützung. Diese Seite dokumentiert, was jedes
        installiert, wovon es abhängt und wie Sie es aktivieren oder ausmustern.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Startseite
            item: 'https://dxpr.com/de'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: de
---
[Help Center](/de/hc)/[Documentation](/de/hc/documentation) /[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) # Submodule.

 Learn DXPR BuilderExtendArchitectuur en API’s

   ## In this guide

 Related guides

- [Inhaltstypen](/de/hc/documentation/learn-dxpr-builder/integrations/content-types)
- [Eigene Icon-Sets](/de/hc/documentation/learn-dxpr-builder/integrations/media-library)

Der Ordner `modules/` hält drei Submodule. Zwei sind kleine Konfigurationspakete: ein Inhaltstyp und ein Blocktyp, verdrahtet mit dem Builder. Das dritte ist der alte Entity-Browser-Medienpicker, der älter ist als die Medienbibliothek-Unterstützung. Diese Seite dokumentiert, was jedes installiert, wovon es abhängt und wie Sie es aktivieren oder ausmustern.

| Modul | Systemname | Bietet | Status |
|---|---|---|---|
| DXPR Builder Drag and Drop Page | `dxpr_builder_page` | `drag_and_drop_page`-Inhaltstyp | Unterstützt |
| DXPR Builder Block Type | `dxpr_builder_block` | `drag_and_drop_block`-Blocktyp | Unterstützt |
| DXPR Builder Media | `dxpr_builder_media` | Entity-Browser-Medienpicker | Alt; verborgen auf der Extend-Seite |

Keines ist erforderlich. Der Builder arbeitet auf jedem Textfeld, dessen Anzeige den Formatierer **DXPR Builder** nutzt (`dxpr_builder_text`); siehe [Installation auf bestehenden Inhaltstypen](/de/hc/documentation/learn-dxpr-builder/getting-started/installing-on-existing-content-types).

## DXPR Builder Drag and Drop Page

`modules/dxpr_builder_page` installiert den Inhaltstyp **Drag and Drop Page**(`node.type.drag_and_drop_page`) aus `config/optional/`:

- Das Feld `body`, mit Standardanzeige per Formatierer `dxpr_builder_text`und mit Field Group gruppiertem Formular.
- Drei DXPR-Theme-Felder: `field_dth_hide_regions`, `field_dth_main_content_width` und `field_dth_page_layout`. Sie installieren sich nur, wenn ihre Feld-Storages existieren, die das DXPR-Theme-Helper-Modul bereitstellt.

Abhängigkeiten aus `dxpr_builder_page.info.yml`: `field_group`, `text`, `node` und `dxpr_builder`. `hook_install()` erzeugt das `body`-Feld-Storage, wenn es fehlt. Wenn die optionale Konfiguration nicht installieren kann, wie auf dem Minimal-Profil, installiert es Typ, Body-Feld und Anzeigen selbst, ohne die `menu_ui`- und `path`-Teile. `dxpr_builder_page_update_8001()` markiert die installierte Konfiguration als vom Modul erzwungen.

`src/DXPRBuilderPageUninstallValidator.php` (registriert in `dxpr_builder_page.services.yml`) blockiert Deinstallation, solange eine `drag_and_drop_page`-Node existiert. Löschen oder ändern Sie zuerst den Typ dieser Nodes.

1. Modul aktivieren:

    ```bash
    drush en dxpr_builder_page -y

    ```
2. Seite unter `/node/add/drag_and_drop_page` erstellen. Der Builder startet auf dem Body-Feld, wenn die Seite von einer bearbeitenden Person betrachtet wird.

Wenn Aktivieren mit „unmet dependencies“ scheitert, aktivieren Sie Field Group und prüfen, dass ein `body`-Feld-Storage existiert; siehe [Probleme nach dem Update](/hc/documentation/learn-dxpr-builder/troubleshooting/after-updating).

## DXPR Builder Block Type

`modules/dxpr_builder_block` installiert den Blocktyp **Drag and Drop Block**(`block_content.type.drag_and_drop_block`) aus `config/optional/`, mit einem `body`-Feld, dem Formatierer `dxpr_builder_text` in der Standardanzeige und der Formularanzeige. Der Typ hat **Create new revision** eingeschaltet, und `dxpr_builder_block_update_8002()` schaltet es für ältere Installationen ein, daher erzeugt jeder Builder-Speichervorgang auf einem Block eine Revision (siehe [Content-Staging](/de/hc/documentation/learn-dxpr-builder/advanced/content-staging)).

Abhängigkeiten: `text`, `node` und `dxpr_builder`.

1. Modul aktivieren:

    ```bash
    drush en dxpr_builder_block -y

    ```
2. Block unter `/block/add/drag_and_drop_block` erstellen.
3. In einer Region platzieren. Bearbeitende bearbeiten ihn direkt auf jeder Seite, auf der er erscheint.

`dxpr_builder_entity_type_alter()` tauscht die eigene Klasse `Drupal\dxpr_builder\Entity\BlockContent` des Moduls ein, wie für `Node`. Die Klasse speichert eine leere Zeichenkette in leere Builder-Felder, daher hat der Editor immer etwas, woran er andockt. Ein Blocktyp, den Sie selbst erstellen, funktioniert daher genauso, sobald seine Anzeige den DXPR-Builder-Formatierer nutzt.

## DXPR Builder Media

`modules/dxpr_builder_media` ist der Entity-Browser-basierte Bildpicker, den das Modul vor der Core-Medienbibliothek-Unterstützung nutzte. Es ist mit `hidden: true`in seiner `.info.yml` markiert, erscheint daher nicht unter **Extend**; Sie können es weiterhin per Drush aktivieren. Es installiert:

- `entity_browser.browser.dxpr_builder_media_modal`: ein modaler Browser mit Bezeichnung **DXPR Builder Image Browser** mit zwei Widgets, einem Tab **Media Library**, gestützt von der Ansicht `dxpr_builder_media`, und einem Tab **Upload new image**, der über Inline Entity Form eine `image`-Medienentität erzeugt.
- `views.view.dxpr_builder_media`: das Medienraster für das erste Widget.
- `image.style.dxpr_builder_media_thumbnail`: ein 300-mal-300-Pixel- Skalieren-und-Zuschneiden-Stil für das Raster.
- Bibliotheken `view`, `claro_style` und `gin_style`(`dxpr_builder_media.libraries.yml`). Das Modul hängt das Gin-Stylesheet an die Ansicht, wenn das aktive Theme Gin ist oder darauf basiert, und sonst das Claro-Stylesheet.

Abhängigkeiten: `inline_entity_form`, `entity_browser`, `entity_browser_entity_form`, `media`, `media_library` und `views`. Bei Installation setzt das Modul `media_browser` in `dxpr_builder.settings` auf `dxpr_builder_media_modal`; bei Deinstallation setzt es ihn auf leere Zeichenkette (**Basic file upload**) und löscht den Bildstil.

Der empfohlene Browser ist die Core-Medienbibliothek, die kein Submodul braucht:

1. Altes Modul deinstallieren, falls aktiviert:

    ```bash
    drush pm:uninstall dxpr_builder_media -y

    ```
2. Zu **DXPR Studio &gt; DXPR Builder &gt; General Settings**(`/admin/dxpr_studio/dxpr_builder/settings`) gehen und **Media** öffnen.
3. Setzen Sie **Browser type** auf **Media Library** und klicken Sie auf **Save settings**. Die Deinstallation hat es auf **Basic file upload**zurückgesetzt.

Behalten Sie das Submodul nur auf einer Website, die von einem Entity-Browser abhängt, der Datei-IDs zurückgibt; siehe [Bilder laden nicht hoch oder verschwinden](/hc/documentation/learn-dxpr-builder/troubleshooting/images-and-media)für die Fehler, die ein unpassender Browser erzeugt. Das Modul trägt den einzigen PHPUnit-Test des Repositorys, `tests/src/FunctionalJavascript/MediaEntityBrowserTest.php`; siehe [Testen](/de/hc/documentation/learn-dxpr-builder/development/testing).

## Mehrere auf einmal aktivieren

```bash
drush en dxpr_builder_page dxpr_builder_block -y

```

Jedes Submodul ist unabhängig von den anderen.

## Wie geht es weiter?

- [Inhaltstypen](/de/hc/documentation/learn-dxpr-builder/integrations/content-types) für die Nutzung des Builders auf eigenen Inhaltstypen.
- [Medienbibliothek-Integration](/de/hc/documentation/learn-dxpr-builder/integrations/media-library) für den empfohlenen Bildpicker.