---
url: 'https://dxpr.com/pt-pt/hc/documentacao/aprender-dxpr-builder/desenvolvimento/submodulos'
title: 'Submódulos | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T11:48:06+00:00'
updated: '2026-10-24T17:19:22+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  O diretório modules/ tem três submódulos. Dois são pacotes
  pequenos de configuração: um tipo de conteúdo e um tipo de bloco ligados ao
  construtor. O terceiro é o seletor de multimédia Entity Browser legado que
  antecede o suporte da Media Library. Esta página documenta
  o que cada um instala, de que depende, e como o ativar ou
  reformar.
tags:
  - 'Architecture and APIs'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T17:19:22+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: Submódulos
      description: |-
        O diretório modules/ tem três submódulos. Dois são pacotes
        pequenos de configuração: um tipo de conteúdo e um tipo de bloco ligados ao
        construtor. O terceiro é o seletor de multimédia Entity Browser legado que
        antecede o suporte da Media Library. Esta página documenta
        o que cada um instala, de que depende, e como o ativar ou
        reformar.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T11:48:06+0000'
      dateModified: '2026-10-24T17:19:22+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/pt-pt/hc/documentacao/aprender-dxpr-builder/desenvolvimento/submodulos'
      articleSection: 'Arquitetura e APIs'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/pt-pt/hc/documentacao/aprender-dxpr-builder/desenvolvimento/submodulos'
      description: |-
        O diretório modules/ tem três submódulos. Dois são pacotes
        pequenos de configuração: um tipo de conteúdo e um tipo de bloco ligados ao
        construtor. O terceiro é o seletor de multimédia Entity Browser legado que
        antecede o suporte da Media Library. Esta página documenta
        o que cada um instala, de que depende, e como o ativar ou
        reformar.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Início
            item: 'https://dxpr.com/pt-pt'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: pt-pt
---
[Centro de ajuda](/pt-pt/node/75)/[Documentação](/pt-pt/hc/documentacao) /[Aprender DXPR Builder](/pt-pt/hc/documentation/learn-dxpr-builder) /[Estender](/pt-pt/hc/documentation/learn-dxpr-builder/extend) /[Arquitetura e APIs](/pt-pt/hc/documentation/learn-dxpr-builder/extend/architecture) # Submódulos.

 Aprender DXPR BuilderEstenderArquitetura e APIs

   ## Neste guia

 Guias relacionados

- [Tipos de conteúdo](/pt-pt/hc/documentacao/aprender-dxpr-builder/integracoes/tipos-de-conteudo)
- [Coloque uma imagem da sua biblioteca de média](/pt-pt/hc/documentacao/aprender-dxpr-builder/integracoes/biblioteca-de-multimedia)

O diretório `modules/` tem três submódulos. Dois são pacotes pequenos de configuração: um tipo de conteúdo e um tipo de bloco ligados ao construtor. O terceiro é o seletor de multimédia Entity Browser legado que antecede o suporte da Media Library. Esta página documenta o que cada um instala, de que depende, e como o ativar ou reformar.

| Module | Machine name | Provides | Status |
|---|---|---|---|
| DXPR Builder Drag and Drop Page | `dxpr_builder_page` | `drag_and_drop_page`, o tipo de conteúdo | Supported |
| DXPR Builder Block Type | `dxpr_builder_block` | `drag_and_drop_block`, o tipo de bloco | Supported |
| DXPR Builder Media | `dxpr_builder_media` | Seletor de multimédia Entity Browser | Legacy; hidden from the Extend page |

Nenhum deles é obrigatório. O construtor funciona em qualquer campo de texto cuja apresentação usa o formatador **DXPR Builder**(`dxpr_builder_text`); consulte [Instalar em tipos de conteúdo existentes](/pt-pt/hc/documentacao/aprender-dxpr-builder/primeiros-passos/instalar-em-tipos-de-conteudo-existentes).

## DXPR Builder Drag and Drop Page

`modules/dxpr_builder_page` instala o tipo de conteúdo **Drag and Drop Page**(`node.type.drag_and_drop_page`) a partir de `config/optional/`:

- O campo `body`, com a apresentação predefinida a usar o formatador `dxpr_builder_text` e a apresentação de formulário agrupada com Field Group.
- Três campos do DXPR Theme: `field_dth_hide_regions`, `field_dth_main_content_width` e `field_dth_page_layout`. Instalam-se apenas quando existem os armazenamentos de campo, que o módulo DXPR Theme Helper fornece.

Dependências de `dxpr_builder_page.info.yml`: `field_group`, `text`, `node` e `dxpr_builder`. `hook_install()` cria o armazenamento de campo `body` quando não existe. Quando a configuração opcional não se instala, como no perfil Minimal, instala o tipo, o campo body e as apresentações, sem as partes `menu_ui` e `path`. `dxpr_builder_page_update_8001()` marca a configuração instalada como imposta pelo módulo.

`src/DXPRBuilderPageUninstallValidator.php` (declarado em `dxpr_builder_page.services.yml`) bloqueia a desinstalação enquanto existir um nó `drag_and_drop_page`. Elimine ou mude o tipo desses nós primeiro.

1. Ative o módulo:

    ```bash
    drush en dxpr_builder_page -y

    ```
2. Crie uma página em `/node/add/drag_and_drop_page`. O construtor começa no campo body quando um editor vê a página.

Se a ativação falha com "unmet dependencies", ative Field Group e verifique que existe um armazenamento de campo `body`; consulte [Problemas após atualizar](/pt-pt/hc/documentacao/aprender-dxpr-builder/resolucao-de-problemas/depois-de-atualizar).

## DXPR Builder Block Type

`modules/dxpr_builder_block` instala o tipo de bloco **Drag and Drop Block**(`block_content.type.drag_and_drop_block`) a partir de `config/optional/`, com um campo `body`, o formatador `dxpr_builder_text`na apresentação predefinida, e a apresentação de formulário. O tipo tem **Create new revision** ligado, e `dxpr_builder_block_update_8002()` liga-o para instalações antigas, por isso cada gravação do construtor num bloco cria uma revisão (consulte [Encenação de conteúdos](/pt-pt/hc/documentation/learn-dxpr-builder/advanced/content-staging)).

Dependências: `text`, `node` e `dxpr_builder`.

1. Ative o módulo:

    ```bash
    drush en dxpr_builder_block -y

    ```
2. Crie um bloco em `/block/add/drag_and_drop_block`.
3. Coloque-o numa região. Os editores editam-no no lugar em qualquer página onde aparece.

`dxpr_builder_entity_type_alter()` troca pela classe própria do módulo `Drupal\dxpr_builder\Entity\BlockContent`, como faz para `Node`. A classe guarda uma cadeia vazia em campos vazios do construtor, para o editor ter sempre algo a que se ligar. Um tipo de bloco criado manualmente funciona por isso da mesma forma quando a apresentação usa o formatador do DXPR Builder.

## DXPR Builder Media

`modules/dxpr_builder_media` é o seletor de imagens baseado em Entity Browser que o módulo usava antes do suporte da Media Library do núcleo. Está marcado com `hidden: true` no `.info.yml`, por isso não aparece em **Extend**; ainda pode ativá-lo com Drush. Instala:

- `entity_browser.browser.dxpr_builder_media_modal`: um navegador modal etiquetado **DXPR Builder Image Browser** com dois widgets, um separador **Media Library** suportado pela vista `dxpr_builder_media`e um separador **Upload new image** que cria uma entidade multimédia `image`através de Inline Entity Form.
- `views.view.dxpr_builder_media`: a grelha de multimédia para o primeiro widget.
- `image.style.dxpr_builder_media_thumbnail`: um estilo de redução e corte de 300 por 300 píxeis para a grelha.
- Bibliotecas `view`, `claro_style` e `gin_style`(`dxpr_builder_media.libraries.yml`). O módulo anexa a folha de estilos Gin à vista quando o tema ativo é Gin ou baseado nele, e a folha de estilos Claro nos outros casos.

Dependências: `inline_entity_form`, `entity_browser`, `entity_browser_entity_form`, `media`, `media_library` e `views`. Ao instalar, o módulo define `media_browser` em `dxpr_builder.settings` como `dxpr_builder_media_modal`; ao desinstalar define-o como cadeia vazia (**Basic file upload**) e elimina o estilo de imagem.

O navegador recomendado é a Media Library do núcleo, que não precisa de submódulo:

1. Desinstale o módulo legado se está ativo:

    ```bash
    drush pm:uninstall dxpr_builder_media -y

    ```
2. Aceda a **DXPR Studio &gt; DXPR Builder &gt; General Settings**(`/admin/dxpr_studio/dxpr_builder/settings`) e abra **Media**.
3. Defina **Browser type** como **Media Library** e clique em **Save settings**. A desinstalação repôs **Basic file upload**.

Mantenha o submódulo apenas num site que depende de um Entity Browser que devolve ID de ficheiro; consulte [As imagens não carregam ou desaparecem](/pt-pt/hc/documentacao/aprender-dxpr-builder/resolucao-de-problemas/imagens-e-multimedia)para os erros que um navegador desencontrado produz. O módulo traz o único teste PHPUnit do repositório, `tests/src/FunctionalJavascript/MediaEntityBrowserTest.php`; consulte [Testes](/pt-pt/hc/documentacao/aprender-dxpr-builder/desenvolvimento/testes).

## Ativar vários de uma vez

```bash
drush en dxpr_builder_page dxpr_builder_block -y

```

Cada submódulo é independente dos outros.

## O que se segue?

- [Tipos de conteúdo](/pt-pt/hc/documentacao/aprender-dxpr-builder/integracoes/tipos-de-conteudo) para usar o construtor nos tipos de conteúdo próprios.
- [Integração da Media Library](/pt-pt/hc/documentacao/aprender-dxpr-builder/integracoes/biblioteca-de-multimedia) para o seletor de imagens recomendado.