---
url: 'https://dxpr.com/zh-hans/hc/documentation/learn-dxpr-builder/development/submodules'
title: '子模块 | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T00:45:20+00:00'
updated: '2026-10-24T09:09:48+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: '该 modules/ 目录中有三个子模块。两个是小的配置包：接到构建器的内容类型和区块类型。第三个是 Media Library 支持之前的旧 Entity Browser 媒体选择器。本页记录每个安装的内容、依赖，以及如何启用或退役。'
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: 子模块
      description: '该 modules/ 目录中有三个子模块。两个是小的配置包：接到构建器的内容类型和区块类型。第三个是 Media Library 支持之前的旧 Entity Browser 媒体选择器。本页记录每个安装的内容、依赖，以及如何启用或退役。'
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T00:45:20+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/zh-hans/hc/documentation/learn-dxpr-builder/development/submodules'
      articleSection: 'Architectuur en API’s'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/zh-hans/hc/documentation/learn-dxpr-builder/development/submodules'
      description: '该 modules/ 目录中有三个子模块。两个是小的配置包：接到构建器的内容类型和区块类型。第三个是 Media Library 支持之前的旧 Entity Browser 媒体选择器。本页记录每个安装的内容、依赖，以及如何启用或退役。'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: 首页
            item: 'https://dxpr.com/zh-hans'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: zh-hans
---
[Help Center](/zh-hans/node/75)/[Documentation](/zh-hans/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) # 子模块.

 Learn DXPR BuilderExtendArchitectuur en API’s

   ## In this guide

 Related guides

- [内容类型](/zh-hans/hc/documentation/learn-dxpr-builder/integrations/content-types)
- [从媒体库放置图片](/zh-hans/hc/documentation/learn-dxpr-builder/integrations/media-library)

该 `modules/` 目录中有三个子模块。两个是小的配置包：接到构建器的内容类型和区块类型。第三个是 Media Library 支持之前的旧 Entity Browser 媒体选择器。本页记录每个安装的内容、依赖，以及如何启用或退役。

| 模块 | 机器名 | 提供 | 状态 |
|---|---|---|---|
| DXPR Builder Drag and Drop Page | `dxpr_builder_page` | `drag_and_drop_page` 内容类型 | 支持 |
| DXPR Builder Block Type | `dxpr_builder_block` | `drag_and_drop_block` 区块类型 | 支持 |
| DXPR Builder Media | `dxpr_builder_media` | Entity Browser 媒体选择器 | 旧版；在 Extend 页面隐藏 |

它们都不是必需的。构建器适用于任何视图显示使用 **DXPR Builder** 格式化器（`dxpr_builder_text`）的文本字段；请参阅 [在已有内容类型上安装](/hc/documentation/learn-dxpr-builder/getting-started/installing-on-existing-content-types)。

## DXPR Builder Drag and Drop Page

`modules/dxpr_builder_page` 安装 **Drag and Drop Page** 内容类型（`node.type.drag_and_drop_page`），来自 `config/optional/`：

- 该 `body` 字段，默认视图显示使用 `dxpr_builder_text` 格式化器，表单显示用 Field Group 分组。
- 三个 DXPR Theme 字段：`field_dth_hide_regions`、`field_dth_main_content_width` 和 `field_dth_page_layout`。它们只在字段存储存在时安装，字段存储由 DXPR Theme Helper 模块提供。

依赖来自 `dxpr_builder_page.info.yml`：`field_group`、`text`、`node` 和 `dxpr_builder`。`hook_install()` 在 `body` 字段存储不存在时创建它。可选配置无法安装时（如 Minimal 安装配置），它安装类型、正文字段和显示本身，不带 `menu_ui` 和 `path` 部分。`dxpr_builder_page_update_8001()` 将已安装的配置标记为模块强制。

`src/DXPRBuilderPageUninstallValidator.php`（注册在 `dxpr_builder_page.services.yml` 中）在存在任何 `drag_and_drop_page` 节点时阻止卸载。请先删除这些节点或更改其类型。

1. 启用模块：

    ```bash
    drush en dxpr_builder_page -y

    ```
2. 在 `/node/add/drag_and_drop_page` 创建页面。编辑人员查看页面时，构建器在正文字段上启动。

启用失败并提示“unmet dependencies”时，请启用 Field Group 并检查 `body` 字段存储是否存在；请参阅 [更新后出现的问题](/zh-hans/hc/documentation/learn-dxpr-builder/troubleshooting/after-updating)。

## DXPR Builder Block Type

`modules/dxpr_builder_block` 安装 **Drag and Drop Block** 区块类型（`block_content.type.drag_and_drop_block`），来自 `config/optional/`，带 `body` 字段、默认视图显示上的 `dxpr_builder_text` 格式化器和表单显示。该类型打开了 **Create new revision**，`dxpr_builder_block_update_8002()` 为旧安装打开它，因此区块上的每次构建器保存都创建修订（请参阅 [内容暂存](/zh-hans/hc/documentation/learn-dxpr-builder/advanced/content-staging)）。

依赖：`text`、`node` 和 `dxpr_builder`。

1. 启用模块：

    ```bash
    drush en dxpr_builder_block -y

    ```
2. 在 `/block/add/drag_and_drop_block` 创建区块。
3. 将它放入区域。编辑人员在它出现的任何页面上就地编辑它。

`dxpr_builder_entity_type_alter()` 换入模块自己的 `Drupal\dxpr_builder\Entity\BlockContent` 类，对 `Node` 也一样。该类向空构建器字段存入空字符串，编辑器始终有附着点。因此您自己创建的区块类型一旦视图显示使用 DXPR Builder 格式化器，工作方式相同。

## DXPR Builder Media

`modules/dxpr_builder_media` 是模块在核心 Media Library 支持之前的 Entity Browser 图片选择器。它在 `.info.yml` 中标记为 `hidden: true`，因此不出现在 **Extend**；您仍可以用 Drush 启用它。它安装：

- `entity_browser.browser.dxpr_builder_media_modal`：标签为 **DXPR Builder Image Browser** 的弹窗浏览器，带两个小部件：**Media Library** 选项卡（由 `dxpr_builder_media` 视图支持），以及 **Upload new image** 选项卡（通过 Inline Entity Form 创建 `image` 媒体实体）。
- `views.view.dxpr_builder_media`：第一个小部件的媒体网格。
- `image.style.dxpr_builder_media_thumbnail`：网格用的 300 by 300 像素缩放裁剪样式。
- 库 `view`、`claro_style` 和 `gin_style`（`dxpr_builder_media.libraries.yml`）。当前主题为 Gin 或基于 Gin 时，模块向视图附加 Gin 样式表，否则附加 Claro 样式表。

依赖：`inline_entity_form`、`entity_browser`、`entity_browser_entity_form`、`media`、`media_library` 和 `views`。安装时模块将 `dxpr_builder.settings` 中的 `media_browser` 设为 `dxpr_builder_media_modal`；卸载时设为空字符串（**Basic file upload**）并删除图片样式。

推荐的浏览器是核心 Media Library，不需要子模块：

1. 卸载旧模块（如果已启用）：

    ```bash
    drush pm:uninstall dxpr_builder_media -y

    ```
2. 前往 **DXPR Studio &gt; DXPR Builder &gt; General Settings**(`/admin/dxpr_studio/dxpr_builder/settings`) 并打开 **Media**。
3. 将 **Browser type** 设为 **Media Library** 并点击 **Save settings**。卸载已将其重置为 **Basic file upload**。

只在依赖返回文件 ID 的 Entity Browser 的网站上保留该子模块；不匹配的浏览器产生的错误请参阅 [图片无法上传或消失](/zh-hans/hc/documentation/learn-dxpr-builder/troubleshooting/images-and-media)。模块带有仓库中唯一的 PHPUnit 测试 `tests/src/FunctionalJavascript/MediaEntityBrowserTest.php`；请参阅 [测试](/zh-hans/hc/documentation/learn-dxpr-builder/development/testing)。

## 一次启用多个

```bash
drush en dxpr_builder_page dxpr_builder_block -y

```

每个子模块相互独立。

## 接下来做什么？

- [内容类型](/hc/documentation/learn-dxpr-builder/integrations/content-types)：在自己的内容类型上使用构建器。
- [Media Library 集成](/zh-hans/hc/documentation/learn-dxpr-builder/integrations/media-library)：推荐的图片选择器。