---
url: 'https://dxpr.com/pl/hc/dokumentacja/nauka-dxpr-builder/pierwsze-kroki/migracja-z-1x-do-3x'
title: 'Migracja z DXPR Builder 1.x albo 2.x | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T01:35:52+00:00'
updated: '2026-10-24T20:03:43+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'DXPR Builder 3.x aktualizuje się w miejscu z każdego wydania 1.x albo 2.x. Composer podmienia kod, a drush updatedb uruchamia hooki aktualizacji w dxpr_builder.install, które konwertują konfigurację i treść. Ta strona wymienia, co robią te hooki, co zmieniło się dla własnego kodu i jak zweryfikować wynik. Daty wydań pochodzą z tagów git; zobacz Starsze wydania.'
tags:
  - 'Move from another builder'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T20:03:43+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Migracja z DXPR Builder 1.x albo 2.x'
      description: 'DXPR Builder 3.x aktualizuje się w miejscu z każdego wydania 1.x albo 2.x. Composer podmienia kod, a drush updatedb uruchamia hooki aktualizacji w dxpr_builder.install, które konwertują konfigurację i treść. Ta strona wymienia, co robią te hooki, co zmieniło się dla własnego kodu i jak zweryfikować wynik. Daty wydań pochodzą z tagów git; zobacz Starsze wydania.'
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T01:35:52+0000'
      dateModified: '2026-10-24T20:03:43+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/pl/hc/dokumentacja/nauka-dxpr-builder/pierwsze-kroki/migracja-z-1x-do-3x'
      articleSection: 'Przejdź z innego kreatora'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/pl/hc/dokumentacja/nauka-dxpr-builder/pierwsze-kroki/migracja-z-1x-do-3x'
      description: 'DXPR Builder 3.x aktualizuje się w miejscu z każdego wydania 1.x albo 2.x. Composer podmienia kod, a drush updatedb uruchamia hooki aktualizacji w dxpr_builder.install, które konwertują konfigurację i treść. Ta strona wymienia, co robią te hooki, co zmieniło się dla własnego kodu i jak zweryfikować wynik. Daty wydań pochodzą z tagów git; zobacz Starsze wydania.'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: 'Strona Główna'
            item: 'https://dxpr.com/pl'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: pl
---
[Centrum pomocy](/pl/hc)/[Dokumentacja](/pl/hc/dokumentacja) /[Poznaj DXPR Builder](/pl/hc/documentation/learn-dxpr-builder) /[Zacznij tutaj](/pl/hc/documentation/learn-dxpr-builder/start-here) /[Przejdź z innego kreatora](/pl/hc/documentation/learn-dxpr-builder/migration) # Migracja z DXPR Builder 1.x albo 2.x.

 Poznaj DXPR BuilderZacznij tutajPrzejdź z innego kreatora

   ## W tym przewodniku

 Powiązane przewodniki

- [Aktualizuj DXPR Builder](/pl/hc/dokumentacja/nauka-dxpr-builder/pierwsze-kroki/aktualizowanie)
- [Dziennik zmian](/pl/hc/dokumentacja/nauka-dxpr-builder/pierwsze-kroki/dziennik-zmian)
- [Opis konfiguracji.](/pl/hc/dokumentacja/nauka-dxpr-builder/referencja/opis-konfiguracji)

DXPR Builder 3.x aktualizuje się w miejscu z każdego wydania 1.x albo 2.x. Composer podmienia kod, a `drush updatedb` uruchamia hooki aktualizacji w `dxpr_builder.install`, które konwertują konfigurację i treść. Ta strona wymienia, co robią te hooki, co zmieniło się dla własnego kodu i jak zweryfikować wynik. Daty wydań pochodzą z tagów git; zobacz [Starsze wydania](/pl/hc/dokumentacja/nauka-dxpr-builder/pierwsze-kroki/starsze-wydania).

## Historia wersji w skrócie

| Seria | Drupal | Uwagi |
|---|---|---|
| 7.x-1.x | Drupal 7 | Sprzedawany jako Glazed Builder, później przemianowany. |
| 1.x (8.x-1.x) | Drupal 8 i 9 | Nazwa maszynowa modułu `dxpr_builder` od pierwszego wydania 1.x w maju 2020. Ostatnie wydanie 1.8.8. |
| 2.x | Drupal 9.3 do 11 | CKEditor 5, wsparcie modułu Key, pierwsze funkcje AI. Ostatnie wydanie 2.8.1. |
| 3.x | Drupal 10.2 i 11 | Tylko Bootstrap 5, wymagany moduł Key, migracje treści, generowanie stron i obrazów przez AI. |

Nazwa maszynowa nie zmieniła się między 1.x a 3.x. Treść wciąż nosząca kod z ery Glazed musi zostać zmigrowana na 1.x albo 2.x przed aktualizacją; 3.x już nie przepisuje nazwy Glazed (zobacz poniżej).

## Wymagania przed startem

- Drupal 10.2 albo nowszy, albo Drupal 11 (`core_version_requirement` w `dxpr_builder.info.yml`).
- Moduł Key. To twarda zależność w 3.x; `dxpr_builder_update_9020()` instaluje go, gdy `drush updatedb` stwierdzi jego brak.
- Klucz produktu wydany dla DXPR Builder 2.0.0 albo nowszego. Klucze bez oświadczenia `dxpr_tier` są odrzucane przez formularz ustawień.
- Motyw dostarczający Bootstrap 5 albo opcja sideload **Bootstrap 5**. Sideloadowanie Bootstrap 3 i 4 już nie istnieje.

## Kroki migracji

1. Zrób kopię zapasową bazy danych i plików:

    ```bash
    drush sql:dump --result-file=backup.sql

    ```
2. Zaktualizuj kod Composerem. 3.x jest obecnie publikowane jako przedwydania, więc na nie zezwól:

    ```bash
    composer require 'drupal/dxpr_builder:^3.0@beta' --with-all-dependencies

    ```
3. Uruchom hooki aktualizacji i zbuduj ponownie cache:

    ```bash
    drush updatedb
    drush cache:rebuild

    ```

    Kilka hooków 3.x przetwarza każdą wartość pola DXPR Builder partiami (zobacz poniżej). Na dużych witrynach trwają minuty, nie sekundy.
4. Otwórz `/admin/dxpr_studio/dxpr_builder/settings` i sprawdź sekcję **License**. Po aktualizacji 9020 **Storage method** to **Key module**, a **Key** to `DXPR Builder JWT` (`dxpr_builder_jwt`).
5. Sprawdź **Sideload Bootstrap files** na tej samej stronie. Witryny, które miały wybrany Bootstrap 3 albo 4, są teraz na **Bootstrap 5**.
6. Otwórz `/admin/dxpr_studio/dxpr_builder/ai_settings` i zdecyduj, czy trzy przełączniki AI, domyślnie włączone, mają zostać włączone.
7. Odwiedź strony używające DXPR Builder i potwierdź, że renderują się i edytują poprawnie.

## Co robią hooki aktualizacji

Hooki o numerach 8005 do 8025 dostarczono w 1.x. Witryna 1.x uruchamia wszystko od 8026 wzwyż; witryna 2.8.0 albo 2.8.1 uruchamia 8040 i 9014 wzwyż. Nazwy funkcji to `dxpr_builder_update_NNNN()`.

### Dodane w 2.x (uruchamiane przy przyjściu z 1.x)

| Hook | Co robi |
|---|---|
| 8026 | Aktualizuje centralne przechowywanie użytkowników DXPR Builder. |
| 8027 | Dodaje blok informacji licencyjnych i kolumnę „DXPR Builder User” do widoku People. |
| 8028 | Tworzy tabelę `dxpr_lock` do blokowania treści. |
| 8029 | Dodaje blok licencji do panelu licencji użytkowników. |
| 8030 | Przełącza ustawienie Bootstrap po usunięciu opcji „Bootstrap 3 Light”. |
| 8031 | Włącza blok informacji licencyjnych tam, gdzie zainstalowano go wyłączony. |
| 8032 | Usuwa zablokowanych użytkowników z przechowywania licencji. |
| 8033 | Inicjuje `drm_last_contact`. |
| 8034 | Instaluje pole użytkownika `dxpr_user_is_disavowed` oraz akcje avow/disavow użytkowników. |
| 8035 | Inicjuje ustawienie `hide_reminders`. |
| 8036 | Migruje nazwy przycisków paska narzędzi CKEditor 4 w profilach do CKEditor 5. |
| 8037 | Dodaje domyślny styl obrazu dla szybko wczytujących się obrazów. |
| 8038 | Czyści cache, aby zarejestrować usługi integracji modułu Key. |
| 8039 | Naprawia style obrazów z niepełnymi ustawieniami `image_scale_and_crop`. |
| 9007 | Tworzy słowniki `ai_tone_of_voice` i `ai_agent_commands` z domyślnymi terminami. |
| 9008 | Ustawia `ai_enabled` na true i usuwa stary klucz `ai_page_enabled`. |
| 9009 | Przenosi `drm_last_contact` z konfiguracji do stanu. |
| 9010 | Czyści cache. |
| 9011 | Włącza przyciski AI Assistant i AI Tone of Voice w każdym profilu. |
| 9012 | Przywraca `ai_page_enabled` z domyślnym true. |
| 9013 | Ustawia domyślne filtrowanie wyjścia AI (`ai_output_allowed_domains`). |
| 9015 | Dodaje `ai_image_enabled` z domyślnym true. |

### Dodane w 3.x (uruchamiane przy przyjściu z 1.x albo 2.x)

| Hook | Co robi |
|---|---|
| 8040 | Normalizuje `bootstrap` do `bs5`; wartości `1` (Bootstrap 3) i `bs4` są przepisywane. |
| 9014 | Partiami: konwertuje kod Owl Carousel w treści na karuzelę Bootstrap (`src/Migration/OwlCarouselMigration.php`). |
| 9016 | Dodaje `ai_user_model_selection` z domyślnym true. |
| 9017 | Partiami: konwertuje liczniki kołowe circliful na kod postępu Bootstrap (`CircleCounterMigration.php`). |
| 9018 | Partiami: konwertuje starszy kod pasków postępu na strukturę postępu Bootstrap (`ProgressBarMigration.php`). |
| 9020 | Instaluje moduł Key, przenosi `json_web_token` do encji Key `dxpr_builder_jwt`, ustawia `api_key_storage` na `key` i czyści wartość jawnym tekstem. |
| 9021 | Uzupełnia właściwość `type` szablonów użytkowników z ich kodu. |
| 9022 | Partiami: dodaje `data-entity-type` i `data-entity-uuid` do wewnętrznych linków `/node/N` (`EntityLinkMigration.php`). |
| 9023 | Partiami: naprawia format tekstu, zajawkę i usunięte delty, które aktualizacja 9022 zgubiła na polach `text_with_summary`. |
| 9024 | Partiami: wzbogaca aliasowane linki wewnętrzne tak samo jak 9022 (`AliasLinkMigration.php`). |
| 9025 | Czyści `tone_of_voice_vocabulary`, gdy wskazuje na słownik, który już nie istnieje. |
| 9026 | Czyści jawny tekst `json_web_token` pozostawiony w ustawieniach, gdy klucz mieszka w encji Key. |

Nie ma aktualizacji 9019.

### Migracje treści

3.x uruchamia migracje treści tylko partiami; nie ma już konwersji w czasie renderowania. Strona statusu migracji (`/admin/dxpr_studio/dxpr_builder/migration-status`) i raport statusu wymieniają oczekującą treść. Migrują ją powyższe hooki aktualizacji, a także akcje **Run now** i **Run all pending migrations** na tej stronie. Migracje to usługi oznaczone `dxpr_builder.content_migration` (`dxpr_builder.services.yml`). Partia zapisująca błędy nie jest oznaczana jako ukończona; nieudane elementy są logowane i pozostają oczekujące.

Przepisywanie ciągów `glazed_to_dxpr` stosowane przez 1.x i 2.x w czasie renderowania usunięto. Nazwę Glazed porzucono w 1.0.0 w maju 2020 i zakłada się, że cała treść z ery Glazed i Carbide została zmigrowana przez te wydania. Przepisywanie było zwykłym zastąpieniem ciągu. Na witrynach, których treść jedynie wspomina Glazed (artykuły wsparcia, linki dokumentacji), przepisywałoby prozę i psuło linki zamiast migrować kod. Witryny wciąż trzymające nazwy klas Glazed w zapisanej treści powinny najpierw uruchomić wydanie 2.x.

## Zmiany dla własnego kodu

### Formater pól

Id formatera pól to `dxpr_builder_text` (etykieta „DXPR Builder”, `src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php`), niezmienione od 1.x. Ma jedno ustawienie, `profile`, które jest puste dla domyślnego opartego na rolach albo id profilu. Sprawdź, czy każde pole kreatora wciąż używa tego formatera na swoim wyświetlaniu; naprawa aktualizacji 9023 ogranicza się do pól, które go używają.

### Hooki

`dxpr_builder.api.php` dokumentuje hooki 3.x. Zmień nazwy hooków Glazed Builder następująco:

| Hook Glazed Builder | Hook DXPR Builder 3.x |
|---|---|
| `hook_glazed_builder_classes()` | `hook_dxpr_builder_classes_alter(array &$dxpr_builder_classes)` |
| `hook_glazed_builder_buttons_folders()` | `hook_dxpr_builder_element_buttons_folders_alter(array &$dxpr_element_buttons_folders)` |
| `hook_glazed_builder_elements_folders()` | Usunięte; brak hooka zastępczego. |
| brak | `hook_dxpr_builder_icon_sets_alter(array &$icon_sets)`, nowy. Zestawy ikon deklaruje się w plikach `MODULE.dxpr_icon_sets.yml`. |

### CSS i klasy narzędziowe

Własny CSS celujący w nazwy klas Glazed musi używać nazw DXPR, na przykład `dxpr-theme-util`, `panel-dxpr` i `dxpr-builder`. Klasy narzędziowe eksponowane w edytorze są dostarczane przez `hook_dxpr_builder_classes_alter()`.

### Konfiguracja i wdrażanie

- Usuń `json_web_token` z każdej commitowanej konfiguracji; po aktualizacji 9020 klucz mieszka w encji Key `dxpr_builder_jwt`. Ten klucz używa providera **Configuration**, więc klucz jest wciąż eksportowany jako `key.key.dxpr_builder_jwt`. Przełącz go na provider **File** albo **Environment** na `/admin/config/system/keys`, aby trzymać go poza eksportami.
- Eksporty konfiguracji zawierają teraz oba słowniki AI i ich terminy.
- Profile eksportują nazwy przycisków CKEditor 5 w `inline_buttons` i `modal_buttons`.

## Rozwiązywanie problemów

Jeśli treść nie wyświetla się poprawnie po aktualizacji:

1. Uruchom `drush cache:rebuild`.
2. Sprawdź `/admin/reports/dblog` pod kątem komunikatów z kanału `dxpr_builder`; migracje partiami logują pomijane elementy.
3. Potwierdź, że wyświetlanie każdego pola kreatora wciąż używa formatera **DXPR Builder**.
4. Potwierdź, że motyw wczytuje Bootstrap 5, albo włącz sideload na `/admin/dxpr_studio/dxpr_builder/settings`.

## Co dalej?

- [Aktualizacja](/pl/hc/dokumentacja/nauka-dxpr-builder/pierwsze-kroki/aktualizowanie): rutynowe aktualizacje w ramach serii
- [Dziennik zmian](/pl/hc/dokumentacja/nauka-dxpr-builder/pierwsze-kroki/dziennik-zmian): co zmieniło każde wydanie
- [Dokumentacja konfiguracji](/pl/hc/dokumentacja/nauka-dxpr-builder/referencja/opis-konfiguracji): każdy klucz dotykany przez hooki aktualizacji