---
url: 'https://dxpr.com/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0/%D0%B0%D1%80%D1%85%D1%96%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0'
title: 'Архітектура | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T20:08:19+00:00'
updated: '2026-10-24T20:15:47+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  DXPR Builder має три частини: форматувальник поля на PHP, редактор,
  що працює в браузері, і набір маршрутів, які редактор викликає,
  щоб зберігати й отримувати дані. Ця сторінка пояснює, як вони пасують одне одному.
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-24T20:15:47+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: Архітектура
      description: |-
        DXPR Builder має три частини: форматувальник поля на PHP, редактор,
        що працює в браузері, і набір маршрутів, які редактор викликає,
        щоб зберігати й отримувати дані. Ця сторінка пояснює, як вони пасують одне одному.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T20:08:19+0000'
      dateModified: '2026-10-24T20:15:47+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/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0/%D0%B0%D1%80%D1%85%D1%96%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0'
      articleSection: 'Архітектура та API'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0/%D0%B0%D1%80%D1%85%D1%96%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0'
      description: |-
        DXPR Builder має три частини: форматувальник поля на PHP, редактор,
        що працює в браузері, і набір маршрутів, які редактор викликає,
        щоб зберігати й отримувати дані. Ця сторінка пояснює, як вони пасують одне одному.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Home
            item: 'https://dxpr.com/uk'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: uk
---
[Help Center](/uk/hc)/[Documentation](/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F) /[Вивчення DXPR Builder](/uk/hc/documentation/learn-dxpr-builder) /[Розширення](/uk/hc/documentation/learn-dxpr-builder/extend) /[Архітектура та API](/uk/hc/documentation/learn-dxpr-builder/extend/architecture) # Архітектура.

 Вивчення DXPR BuilderРозширенняАрхітектура та API

   ## In this guide

DXPR Builder має три частини: форматувальник поля на PHP, редактор, що працює в браузері, і набір маршрутів, які редактор викликає, щоб зберігати й отримувати дані. Ця сторінка пояснює, як вони пасують одне одному.

## Форматувальник поля

Вміст це HTML, збережений у звичайному текстовому полі Drupal (`text`, `text_long` або `text_with_summary`). Поле стає редагованим, коли його показ перегляду використовує форматувальник **DXPR Builder**(`dxpr_builder_text`, у `src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php`).

Форматувальник завантажує редактор лише коли виконуються всі ці умови:

- глядач оплачуваний: користувач 1, або активний обліковий запис із `edit with dxpr builder`, який не виключено з редагування DXPR Builder;
- глядач може оновити сутність;
- обліковий запис має адресу електронної пошти;
- ліміти користувачів і вмісту ліцензії не перевищено;
- сайт не в списку блокування сервера ліцензій, а сторінка не є сторінкою ревізій.

Усі інші отримують оброблений HTML: токени шляхів розгорнуто, блоки та подання Drupal рендерено в їхні заповнювачі, атрибути редактора `data-az*` вилучено, а бібліотеки, потрібні вмісту, приєднано. Вивід для залогінених користувачів не кешується (`max-age` 0), бо він несе налаштування для кожного користувача.

## Редактор

Редактор це набір файлів JavaScript, завантажених як бібліотека `dxpr_builder/editor.builder`. Вони походять із DXPR CDN, або з власної теки `dxpr_builder/` модуля, коли вона містить локальну збірку; налаштування **Asset source** на General Settings з’являється лише тоді. Редактор розбирає HTML поля в дерево об’єктів елементів і записує його назад у HTML під час збереження.

Типи елементів походять із двох місць у `dxpr_builder/build/`:

| Тека | Типи елементів |
|---|---|
| `dxpr-builder/core-elements/` | Container, Section, Row, Column, Tabs та їхні панелі tab, toggle і slide |
| `dxpr-elements/elements/` | Елементи вмісту та елементи макета Collapsibles, Carousel і Positioned Layers |

Кожен елемент тримає свої налаштування у власному HTML: атрибути `data-azat-*`, класи та вбудовані стилі. Збережений HTML це єдиний запис макета; окремого сховища макета немає. Сторінка [Власні елементи](/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0/%D0%B2%D0%BB%D0%B0%D1%81%D0%BD%D1%96-%D0%B5%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B8) показує формат.

### Розбір наявного HTML

Розмітка без атрибутів конструктора відображається на елементи, коли редактор її завантажує. Контейнери, рядки та колонки Bootstrap стають розділами, рядками та колонками. Розпізнані компоненти стають своїми елементами, наприклад кнопки, сповіщення, картки, цитати, зображення, піктограми, смуги прогресу, вкладки та колапсибли. Текст, таблиці та інша вбудована розмітка стають елементами Text, а `<iframe>` стає елементом HTML. Вільні теги `<script>` і `<style>` та коментарі відкидаються. Правила знаходяться в `dxpr-builder/base-element/parse-html.js`.

## Маршрути, які викликає редактор

Редактор зберігає через `/dxpr_builder/ajax`, завантажує файли через `/dxpr_builder/ajax/file_upload` і досягає ШІ через `/dxpr_builder/ajax/ai/*`. Більшість маршрутів перевіряють перевірку доступу оплачуваного користувача та CSRF-токен; повний список із вимогами доступу наведено в [Довіднику API](/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0/api#editor-routes).

## Сутності конфігурації

| Тип сутності | Префікс конфігурації | Містить |
|---|---|---|
| `dxpr_builder_page_template` | `dxpr_builder.page_template` | Повносторінкові макети |
| `dxpr_builder_user_template` | `dxpr_builder.user_template` | Розділи, збережені редакторами для повторного використання |
| `dxpr_builder_profile` | `dxpr_builder.dxpr_builder_profile` | Обмеження для кожної ролі на елементи, блоки, подання, шаблони, набори піктограм і кнопки текстового редактора |

## Перевірка ліцензії

Ключ продукту це JWT. `DxprBuilderLicenseService` надсилає його на сервер ліцензій DXPR, який повертає статус ліцензії та її ліміти користувачів і вмісту; результат кешується. Без ключа продукту діє безкоштовний рівень: один користувач і 100 елементів вмісту. Служба також тримає синхронізованим список редакторів цього сайту на сервері.