---
url: 'https://dxpr.com/it/hc/documentazione/impara-dxpr-builder/sviluppo/api-hook'
title: 'Riferimento API hook | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T03:04:05+00:00'
updated: '2026-10-24T17:19:22+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  DXPR Builder ha cinque hook. dxpr_builder.api.php li documenta tutti e
  cinque, con un esempio di ciascuno.
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: 'Riferimento API hook'
      description: |-
        DXPR Builder ha cinque hook. dxpr_builder.api.php li documenta tutti e
        cinque, con un esempio di ciascuno.
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T03:04:05+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/it/hc/documentazione/impara-dxpr-builder/sviluppo/api-hook'
      articleSection: 'Architettura e API'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/it/hc/documentazione/impara-dxpr-builder/sviluppo/api-hook'
      description: |-
        DXPR Builder ha cinque hook. dxpr_builder.api.php li documenta tutti e
        cinque, con un esempio di ciascuno.
      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) /[Estendi](/it/hc/documentation/learn-dxpr-builder/extend) /[Architettura e API](/it/hc/documentation/learn-dxpr-builder/extend/architecture) # Riferimento API hook.

 Impara DXPR BuilderEstendiArchitettura e API

   ## In questa guida

 Guide correlate

- [Permessi](/it/hc/documentazione/impara-dxpr-builder/sviluppo/permessi)
- [Riferimento API](/it/hc/documentazione/impara-dxpr-builder/sviluppo/api)

DXPR Builder ha cinque hook. `dxpr_builder.api.php` li documenta tutti e cinque, con un esempio di ciascuno.

| Hook | Richiamato da | Effetto |
|---|---|---|
| `hook_dxpr_builder_classes_alter(&$classes)` | `DxprBuilderService::editorAttach()` | Aggiunge classi all’elenco **HTML classes** nell’editor |
| `hook_dxpr_builder_icon_sets_alter(array &$icon_sets)` | `DxprBuilderService::getIconSets()` | Aggiunge, cambia o rimuove set di icone nel selettore di icone |
| `hook_dxpr_builder_view_elements(array &$element)` | `DxprBuilderFormatter::viewElements()` | Altera il render array di ogni campo mostrato con il formatter DXPR Builder |
| `hook_dxpr_builder_element_buttons_folders_alter(&$folders)` | `DxprBuilderService::getButtonStyles()` | Nessun effetto visibile; vedi sotto |
| `hook_dxpr_builder_elements_folders_alter(&$folders)` | `DxprBuilderService::getDxprElementsFolders()` | Nessun effetto visibile; vedi sotto |

## hook\_dxpr\_builder\_classes\_alter

Aggiunge voci all’elenco di classi offerto dal campo **HTML classes** di ogni elemento. Il codice lo invoca tramite `$this->moduleHandler->alter('dxpr_builder_classes', ...)`, quindi il nome della funzione termina in `_alter`; una funzione chiamata `mymodule_dxpr_builder_classes()` non è mai invocata.

```php
/**
 * Implements hook_dxpr_builder_classes_alter().
 */
function mymodule_dxpr_builder_classes_alter(&$dxpr_builder_classes) {
  // Start a new option group.
  $dxpr_builder_classes['optgroup-brand'] = t('Brand styles');
  $dxpr_builder_classes['brand-primary-bg'] = t('Primary background');
  $dxpr_builder_classes['brand-accent-text'] = t('Accent text colour');
}

```

- `&$dxpr_builder_classes` (array): la chiave è un nome di classe, o più nomi separati da spazi; il valore è l’etichetta. Una chiave che inizia con `optgroup-` avvia un gruppo di opzioni.

L’array contiene già le classi di ogni tema attivo che imposta `dxpr_builder_classes` nel suo `.info.yml`, quindi un tema non ha bisogno di PHP. Vedi [Classi di utilità](/it/hc/documentazione/impara-dxpr-builder/personalizzazione/classi-di-utilita).

## hook\_dxpr\_builder\_icon\_sets\_alter

Gira dopo che il modulo ha unito tutti i file `*.dxpr_icon_sets.yml`dei moduli e temi attivi. Preferisci il file YAML; usa l’hook quando l’elenco dipende dalla logica runtime.

```php
/**
 * Implements hook_dxpr_builder_icon_sets_alter().
 */
function mymodule_dxpr_builder_icon_sets_alter(array &$icon_sets) {
  $module_path = \Drupal::service('extension.list.module')
    ->getPath('mymodule');
  $icon_sets['material'] = [
    'label' => t('Material Symbols'),
    'prefix' => 'material-symbols',
    'css' => $module_path . '/vendor/material-symbols.css',
    'library' => 'mymodule/material_symbols',
    'icons' => [
      'material-symbols material-symbols-star',
      'material-symbols material-symbols-home',
    ],
  ];
}

```

L’hook gira dopo che i percorsi `css` relativi dai file YAML sono stati risolti, quindi un set aggiunto qui richiede un percorso dalla root di Drupal, come nell’esempio. Le chiavi di un set di icone e i 14 set integrati sono elencati in [Set di icone personalizzati](/it/hc/documentazione/impara-dxpr-builder/sviluppo/set-di-icone).

## hook\_dxpr\_builder\_view\_elements

Invocato con `invokeAll()` alla fine di `DxprBuilderFormatter::viewElements()`, dopo che il formatter ha collegato librerie, impostazioni e profilo. `$element` è il render array del campo, passato per riferimento. Gira per ogni visitatore, editor o no.

```php
/**
 * Implements hook_dxpr_builder_view_elements().
 */
function mymodule_dxpr_builder_view_elements(array &$element) {
  $element['#attached']['library'][] = 'mymodule/builder_extras';
}

```

## Hook senza effetto visibile

- `hook_dxpr_builder_element_buttons_folders_alter()` riceve un elenco di cartelle i cui file `.html` descrivono stili di pulsante. Il risultato raggiunge `drupalSettings.dxprBuilder.buttonStyles`. L’elemento Button legge invece il suo elenco fisso di stili Bootstrap, quindi cartelle extra non cambiano niente nell’editor.
- `hook_dxpr_builder_elements_folders_alter()` altererebbe un elenco di cartelle `elements` nei temi, ma niente chiama `getDxprElementsFolders()`, quindi l’hook non gira mai. Non registra elementi; per aggiungerne uno, vedi [Elementi personalizzati](/it/hc/documentazione/impara-dxpr-builder/sviluppo/elementi-personalizzati).

## Prossimi passi

- [Permessi](/it/hc/documentazione/impara-dxpr-builder/sviluppo/permessi) per i permessi definiti dal modulo.
- [Riferimento API](/it/hc/documentation/learn-dxpr-builder/development/api) per servizi e route.