---
url: 'https://dxpr.com/it/hc/documentazione/impara-dxpr-builder/per-iniziare/migrazione-da-1x-a-3x'
title: 'Migrare da DXPR Builder 1.x o 2.x | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T13:43:52+00:00'
updated: '2026-10-24T20:03:43+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  DXPR Builder 3.x si aggiorna sul posto da qualsiasi release 1.x o
  2.x. Composer cambia il codice, e
  drush updatedb esegue gli hook di aggiornamento in
  dxpr_builder.install che convertono configurazione
  e contenuti. Questa pagina elenca cosa fanno quegli hook,
  cosa è cambiato per il codice personalizzato, e come verificare
  il risultato. Le date delle release vengono dai tag git; vedi
  Release precedenti.
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: 'Migrare da DXPR Builder 1.x o 2.x'
      description: |-
        DXPR Builder 3.x si aggiorna sul posto da qualsiasi release 1.x o
        2.x. Composer cambia il codice, e
        drush updatedb esegue gli hook di aggiornamento in
        dxpr_builder.install che convertono configurazione
        e contenuti. Questa pagina elenca cosa fanno quegli hook,
        cosa è cambiato per il codice personalizzato, e come verificare
        il risultato. Le date delle release vengono dai tag git; vedi
        Release precedenti.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T13:43: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/it/hc/documentazione/impara-dxpr-builder/per-iniziare/migrazione-da-1x-a-3x'
      articleSection: 'Passa da un altro builder'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/it/hc/documentazione/impara-dxpr-builder/per-iniziare/migrazione-da-1x-a-3x'
      description: |-
        DXPR Builder 3.x si aggiorna sul posto da qualsiasi release 1.x o
        2.x. Composer cambia il codice, e
        drush updatedb esegue gli hook di aggiornamento in
        dxpr_builder.install che convertono configurazione
        e contenuti. Questa pagina elenca cosa fanno quegli hook,
        cosa è cambiato per il codice personalizzato, e come verificare
        il risultato. Le date delle release vengono dai tag git; vedi
        Release precedenti.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Home
            item: 'https://dxpr.com/it'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: it
---
[Centro assistenza](/it/hc)/[Documentazione](/it/hc/documentazione) /[Impara DXPR Builder](/it/hc/documentation/learn-dxpr-builder) /[Inizia da qui](/it/hc/documentation/learn-dxpr-builder/start-here) /[Passa da un altro builder](/it/hc/documentation/learn-dxpr-builder/migration) # Migrare da DXPR Builder 1.x o 2.x.

 Impara DXPR BuilderInizia da quiPassa da un altro builder

   ## In questa guida

 Guide correlate

- [Aggiornare DXPR Builder](/it/hc/documentazione/impara-dxpr-builder/per-iniziare/aggiornare-builder)
- [Changelog](/it/hc/documentazione/impara-dxpr-builder/per-iniziare/changelog)
- [Riferimento alla configurazione](/it/hc/documentazione/impara-dxpr-builder/riferimento/riferimento-configurazione)

DXPR Builder 3.x si aggiorna sul posto da qualsiasi release 1.x o 2.x. Composer cambia il codice, e `drush updatedb` esegue gli hook di aggiornamento in `dxpr_builder.install` che convertono configurazione e contenuti. Questa pagina elenca cosa fanno quegli hook, cosa è cambiato per il codice personalizzato, e come verificare il risultato. Le date delle release vengono dai tag git; vedi [Release precedenti](/it/hc/documentazione/impara-dxpr-builder/per-iniziare/release-precedenti).

## Storia delle versioni in breve

| Serie | Drupal | Note |
|---|---|---|
| 7.x-1.x | Drupal 7 | Venduto come Glazed Builder, poi rinominato. |
| 1.x (8.x-1.x) | Drupal 8 e 9 | Nome macchina del modulo `dxpr_builder` dalla prima release 1.x di maggio 2020. Ultima release 1.8.8. |
| 2.x | Drupal 9.3 a 11 | CKEditor 5, supporto modulo Key, prime funzioni AI. Ultima release 2.8.1. |
| 3.x | Drupal 10.2 e 11 | Solo Bootstrap 5, modulo Key obbligatorio, migrazioni di contenuti, generazione AI di pagine e immagini. |

Il nome macchina non è cambiato tra 1.x e 3.x. I contenuti che portano ancora markup dell’era Glazed vanno migrati su 1.x o 2.x prima di aggiornare; 3.x non riscrive più il nome Glazed (vedi sotto).

## Requisiti prima di iniziare

- Drupal 10.2 o superiore, o Drupal 11 (`core_version_requirement` in `dxpr_builder.info.yml`).
- Il modulo Key. È una dipendenza obbligatoria in 3.x; `dxpr_builder_update_9020()` lo installa se `drush updatedb` lo trova mancante.
- Una chiave prodotto emessa per DXPR Builder 2.0.0 o successivi. Chiavi senza claim `dxpr_tier` sono rifiutate dal modulo delle impostazioni.
- Un tema che fornisce Bootstrap 5, o l’opzione **Bootstrap 5** di caricamento esterno. Il caricamento di Bootstrap 3 e 4 non esiste più.

## Passi di migrazione

1. Fai un backup di database e file:

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

    ```
2. Aggiorna il codice con Composer. 3.x è al momento pubblicato come pre-release, quindi permettile:

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

    ```
3. Esegui gli hook di aggiornamento e ricostruisci le cache:

    ```bash
    drush updatedb
    drush cache:rebuild

    ```

    Diversi hook 3.x elaborano ogni valore campo DXPR Builder in batch (vedi sotto). Sui siti grandi ci vogliono minuti, non secondi.
4. Apri `/admin/dxpr_studio/dxpr_builder/settings`e controlla la sezione **Licenza**. Dopo l’aggiornamento 9020 il **Metodo di archiviazione** è **Modulo Key**e la **Chiave** è `DXPR Builder JWT`(`dxpr_builder_jwt`).
5. Controlla **File Bootstrap esterni** nella stessa pagina. I siti con Bootstrap 3 o 4 selezionato sono ora su **Bootstrap 5**.
6. Apri `/admin/dxpr_studio/dxpr_builder/ai_settings`e decidi se i tre interruttori AI, predefiniti attivi, devono restare attivi.
7. Visita pagine che usano DXPR Builder e conferma che vengono rese e si modificano correttamente.

## Cosa fanno gli hook di aggiornamento

Gli hook numerati da 8005 a 8025 sono usciti in 1.x. Un sito 1.x esegue tutto da 8026 in poi; un sito 2.8.0 o 2.8.1 esegue 8040 e 9014 in poi. I nomi delle funzioni sono `dxpr_builder_update_NNNN()`.

### Aggiunti in 2.x (eseguiti arrivando da 1.x)

| Hook | Cosa fa |
|---|---|
| 8026 | Aggiorna l’archiviazione utenti centrale di DXPR Builder. |
| 8027 | Aggiunge il blocco info licenza e una colonna “Utente DXPR Builder” alla vista Persone. |
| 8028 | Crea la tabella `dxpr_lock` per il blocco contenuti. |
| 8029 | Aggiunge il blocco licenze alla dashboard licenze utente. |
| 8030 | Cambia l’impostazione Bootstrap dopo la rimozione dell’opzione “Bootstrap 3 Light”. |
| 8031 | Abilita il blocco info licenza dove era installato disabilitato. |
| 8032 | Rimuove gli utenti bloccati dall’archiviazione licenze. |
| 8033 | Inizializza `drm_last_contact`. |
| 8034 | Installa il campo utente `dxpr_user_is_disavowed` e le azioni utente avow/disavow. |
| 8035 | Inizializza l’impostazione `hide_reminders`. |
| 8036 | Migra i nomi dei pulsanti della barra CKEditor 4 nei profili a CKEditor 5. |
| 8037 | Aggiunge uno stile immagine predefinito per immagini a caricamento rapido. |
| 8038 | Svuota le cache per registrare i servizi di integrazione del modulo Key. |
| 8039 | Ripara gli stili immagine con impostazioni `image_scale_and_crop` incomplete. |
| 9007 | Crea i vocabolari `ai_tone_of_voice` e `ai_agent_commands` con termini predefiniti. |
| 9008 | Imposta `ai_enabled` a true e rimuove la vecchia chiave `ai_page_enabled`. |
| 9009 | Sposta `drm_last_contact` dalla configurazione allo stato. |
| 9010 | Svuota le cache. |
| 9011 | Abilita i pulsanti Assistente AI e Tono di voce AI in ogni profilo. |
| 9012 | Ripristina `ai_page_enabled` con predefinito true. |
| 9013 | Imposta i predefiniti del filtro output AI (`ai_output_allowed_domains`). |
| 9015 | Aggiunge `ai_image_enabled` con predefinito true. |

### Aggiunti in 3.x (eseguiti arrivando da 1.x o 2.x)

| Hook | Cosa fa |
|---|---|
| 8040 | Normalizza `bootstrap` a `bs5`; i valori `1` (Bootstrap 3) e `bs4` vengono riscritti. |
| 9014 | Batch: converte il markup Owl Carousel nei contenuti nel carosello Bootstrap (`src/Migration/OwlCarouselMigration.php`). |
| 9016 | Aggiunge `ai_user_model_selection` con predefinito true. |
| 9017 | Batch: converte i contatori circolari circliful in markup di avanzamento Bootstrap (`CircleCounterMigration.php`). |
| 9018 | Batch: converte il markup legacy della barra di avanzamento nella struttura di avanzamento Bootstrap (`ProgressBarMigration.php`). |
| 9020 | Installa il modulo Key, sposta `json_web_token` nell’entità Chiave `dxpr_builder_jwt`, imposta `api_key_storage` a `key` e svuota il valore in testo in chiaro. |
| 9021 | Riempie la proprietà `type` dei modelli utente dal loro markup. |
| 9022 | Batch: aggiunge `data-entity-type` e `data-entity-uuid` ai link interni `/node/N` (`EntityLinkMigration.php`). |
| 9023 | Batch: ripara formato testo, riassunto e delta eliminati che l’aggiornamento 9022 ha perso sui campi `text_with_summary`. |
| 9024 | Batch: arricchisce allo stesso modo i link interni con alias come 9022 (`AliasLinkMigration.php`). |
| 9025 | Svuota `tone_of_voice_vocabulary` quando punta a un vocabolario che non esiste più. |
| 9026 | Svuota un `json_web_token` in testo in chiaro rimasto nelle impostazioni quando la chiave sta in un’entità Chiave. |

Non esiste l’aggiornamento 9019.

### Migrazioni dei contenuti

3.x esegue le migrazioni dei contenuti solo in batch; non c’è più alcuna conversione al rendering. La pagina di stato migrazione (`/admin/dxpr_studio/dxpr_builder/migration-status`) e il report di stato elencano i contenuti in sospeso. Gli hook di aggiornamento sopra li migrano, e così fanno le azioni **Esegui ora** e **Esegui tutte le migrazioni in sospeso** su quella pagina. Le migrazioni sono servizi taggati `dxpr_builder.content_migration`(`dxpr_builder.services.yml`). Un batch che registra errori non è marcato completo; gli elementi falliti sono registrati e restano in sospeso.

La riscrittura stringa `glazed_to_dxpr` applicata al rendering in 1.x e 2.x è stata rimossa. Il nome Glazed è stato abbandonato con 1.0.0 a maggio 2020 e si assume che tutti i contenuti dell’era Glazed e Carbide siano stati migrati da quelle release. La riscrittura era una semplice sostituzione di stringhe. Sui siti i cui contenuti menzionano soltanto Glazed (articoli di supporto, link di documentazione), avrebbe riscritto la prosa e rotto i link invece di migrare il markup. I siti che conservano ancora nomi classe Glazed nei contenuti archiviati dovrebbero eseguire prima la release 2.x.

## Modifiche per il codice personalizzato

### Formattatore campo

L’id del formattatore campo è `dxpr_builder_text`(etichetta “DXPR Builder”, `src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php`), invariato da 1.x. Ha un’impostazione, `profile`, vuota per il predefinito basato sul ruolo o un id profilo. Controlla che ogni campo builder usi ancora questo formattatore nella sua visualizzazione; la riparazione dell’aggiornamento 9023 è limitata ai campi che lo fanno.

### Hook

`dxpr_builder.api.php` documenta gli hook 3.x. Rinomina quelli di Glazed Builder come segue:

| Hook di 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()` | Rimosso; nessun hook sostitutivo. |
| none | `hook_dxpr_builder_icon_sets_alter(array &$icon_sets)`, nuovo. I set di icone sono dichiarati in file `MODULE.dxpr_icon_sets.yml`. |

### CSS e classi di utilità

Il CSS personalizzato che punta ai nomi classe Glazed deve usare i nomi DXPR, come `dxpr-theme-util`, `panel-dxpr` e `dxpr-builder`. Le classi di utilità esposte nell’editor sono fornite tramite `hook_dxpr_builder_classes_alter()`.

### Configurazione e distribuzione

- Rimuovi `json_web_token` da qualsiasi configurazione nel repository; dopo l’aggiornamento 9020 la chiave sta nell’entità Chiave `dxpr_builder_jwt`. Quella Chiave usa il provider **Configurazione**, quindi la chiave è comunque esportata come `key.key.dxpr_builder_jwt`. Passala al provider **File** o **Ambiente**in `/admin/config/system/keys` per tenerla fuori dalle esportazioni.
- Le esportazioni di configurazione includono ora i due vocabolari AI e i loro termini.
- I profili esportano i nomi pulsanti CKEditor 5 in `inline_buttons` e `modal_buttons`.

## Risoluzione dei problemi

Se i contenuti non si mostrano bene dopo l’aggiornamento:

1. Esegui `drush cache:rebuild`.
2. Controlla `/admin/reports/dblog` per messaggi dal canale `dxpr_builder`; le migrazioni batch registrano gli elementi saltati.
3. Conferma che la visualizzazione di ogni campo builder usi ancora il formattatore **DXPR Builder**.
4. Conferma che il tema carichi Bootstrap 5, o abilita il caricamento esterno in `/admin/dxpr_studio/dxpr_builder/settings`.

## Passi successivi

- [Aggiornamento](/it/hc/documentazione/impara-dxpr-builder/per-iniziare/aggiornare-builder): aggiornamenti di routine dentro una serie
- [Changelog](/it/hc/documentazione/impara-dxpr-builder/per-iniziare/changelog): cosa ha cambiato ogni release
- [Riferimento di configurazione](/it/hc/documentation/learn-dxpr-builder/reference/config-reference): ogni chiave toccata dagli hook di aggiornamento